This commit is contained in:
Infi
2025-08-06 22:24:45 +02:00
parent b760de1799
commit efddaf30ad
37 changed files with 153 additions and 145 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="2024.3.0" /> <PackageReference Include="JetBrains.Annotations" Version="2025.2.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.6.3" /> <PackageReference Include="MSTest.TestAdapter" Version="3.6.3" />
<PackageReference Include="MSTest.TestFramework" Version="3.6.3" /> <PackageReference Include="MSTest.TestFramework" Version="3.6.3" />
+4 -4
View File
@@ -1,6 +1,6 @@
<Project Sdk="Dalamud.NET.Sdk/12.0.2"> <Project Sdk="Dalamud.NET.Sdk/13.0.0">
<PropertyGroup> <PropertyGroup>
<Version>1.30.7</Version> <Version>1.31.0</Version>
<TargetFramework>net9.0-windows</TargetFramework> <TargetFramework>net9.0-windows</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
@@ -14,10 +14,10 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="MessagePack" Version="3.1.3" /> <PackageReference Include="MessagePack" Version="3.1.4" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.0" /> <PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.0" />
<PackageReference Include="Pidgin" Version="3.3.0" /> <PackageReference Include="Pidgin" Version="3.3.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.7" /> <PackageReference Include="SixLabors.ImageSharp" Version="3.1.11" />
<PackageReference Include="Watson.Lite" Version="6.2.3" /> <PackageReference Include="Watson.Lite" Version="6.2.3" />
</ItemGroup> </ItemGroup>
+9 -9
View File
@@ -8,7 +8,7 @@ using Dalamud;
using Dalamud.Configuration; using Dalamud.Configuration;
using Dalamud.Game.ClientState.Keys; using Dalamud.Game.ClientState.Keys;
using Dalamud.Interface.FontIdentifier; using Dalamud.Interface.FontIdentifier;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo; namespace ChatTwo;
@@ -633,15 +633,15 @@ internal static class ExtraGlyphRangesExt
_ => throw new ArgumentOutOfRangeException(nameof(ranges), ranges, null), _ => throw new ArgumentOutOfRangeException(nameof(ranges), ranges, null),
}; };
internal static nint Range(this ExtraGlyphRanges ranges) => ranges switch internal static unsafe nint Range(this ExtraGlyphRanges ranges) => ranges switch
{ {
ExtraGlyphRanges.ChineseFull => ImGui.GetIO().Fonts.GetGlyphRangesChineseFull(), ExtraGlyphRanges.ChineseFull => (nint)ImGui.GetIO().Fonts.GetGlyphRangesChineseFull(),
ExtraGlyphRanges.ChineseSimplifiedCommon => ImGui.GetIO().Fonts.GetGlyphRangesChineseSimplifiedCommon(), ExtraGlyphRanges.ChineseSimplifiedCommon => (nint)ImGui.GetIO().Fonts.GetGlyphRangesChineseSimplifiedCommon(),
ExtraGlyphRanges.Cyrillic => ImGui.GetIO().Fonts.GetGlyphRangesCyrillic(), ExtraGlyphRanges.Cyrillic => (nint)ImGui.GetIO().Fonts.GetGlyphRangesCyrillic(),
ExtraGlyphRanges.Japanese => ImGui.GetIO().Fonts.GetGlyphRangesJapanese(), ExtraGlyphRanges.Japanese => (nint)ImGui.GetIO().Fonts.GetGlyphRangesJapanese(),
ExtraGlyphRanges.Korean => ImGui.GetIO().Fonts.GetGlyphRangesKorean(), ExtraGlyphRanges.Korean => (nint)ImGui.GetIO().Fonts.GetGlyphRangesKorean(),
ExtraGlyphRanges.Thai => ImGui.GetIO().Fonts.GetGlyphRangesThai(), ExtraGlyphRanges.Thai => (nint)ImGui.GetIO().Fonts.GetGlyphRangesThai(),
ExtraGlyphRanges.Vietnamese => ImGui.GetIO().Fonts.GetGlyphRangesVietnamese(), ExtraGlyphRanges.Vietnamese => (nint)ImGui.GetIO().Fonts.GetGlyphRangesVietnamese(),
_ => throw new ArgumentOutOfRangeException(nameof(ranges), ranges, null), _ => throw new ArgumentOutOfRangeException(nameof(ranges), ranges, null),
}; };
} }
+3 -3
View File
@@ -4,7 +4,7 @@ using System.Text.Json.Serialization;
using Dalamud.Interface.Textures; using Dalamud.Interface.Textures;
using Dalamud.Interface.Textures.TextureWraps; using Dalamud.Interface.Textures.TextureWraps;
using Dalamud.Utility; using Dalamud.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using SixLabors.ImageSharp; using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
@@ -154,7 +154,7 @@ public static class EmoteCache
public virtual void Draw(Vector2 size) public virtual void Draw(Vector2 size)
{ {
ImGui.Image(Texture!.ImGuiHandle, size); ImGui.Image(Texture!.Handle, size);
} }
internal async Task<byte[]> LoadAsync(Emote emote) internal async Task<byte[]> LoadAsync(Emote emote)
@@ -236,7 +236,7 @@ public static class EmoteCache
if (FrameTimer <= 0.0f) if (FrameTimer <= 0.0f)
FrameTimer = frame.Delay; FrameTimer = frame.Delay;
ImGui.Image(frame.Texture.ImGuiHandle, size); ImGui.Image(frame.Texture.Handle, size);
if (GlobalFrameCount == Plugin.Interface.UiBuilder.FrameCount) if (GlobalFrameCount == Plugin.Interface.UiBuilder.FrameCount)
return; return;
+5 -5
View File
@@ -2,7 +2,7 @@
using Dalamud.Interface.GameFonts; using Dalamud.Interface.GameFonts;
using Dalamud.Interface.ManagedFontAtlas; using Dalamud.Interface.ManagedFontAtlas;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo; namespace ChatTwo;
@@ -44,7 +44,7 @@ public class FontManager
.ReadAsByteArrayAsync() .ReadAsByteArrayAsync()
.Result; .Result;
Dalamud.Utility.Util.WriteAllBytesSafe(filePath, GameSymFont); Dalamud.Utility.FilesystemUtil.WriteAllBytesSafe(filePath, GameSymFont);
} }
} }
@@ -52,10 +52,10 @@ public class FontManager
{ {
ushort[] BuildRange(IReadOnlyList<ushort>? chars, params nint[] ranges) ushort[] BuildRange(IReadOnlyList<ushort>? chars, params nint[] ranges)
{ {
var builder = new ImFontGlyphRangesBuilderPtr(ImGuiNative.ImFontGlyphRangesBuilder_ImFontGlyphRangesBuilder()); var builder = new ImFontGlyphRangesBuilderPtr(ImGuiNative.ImFontGlyphRangesBuilder());
// text // text
foreach (var range in ranges) foreach (var range in ranges)
builder.AddRanges(range); builder.AddRanges((ushort*)range);
// chars // chars
if (chars != null) if (chars != null)
@@ -85,7 +85,7 @@ public class FontManager
return builder.BuildRangesToArray(); return builder.BuildRangesToArray();
} }
var ranges = new List<nint> { ImGui.GetIO().Fonts.GetGlyphRangesDefault() }; var ranges = new List<nint> { (nint)ImGui.GetIO().Fonts.GetGlyphRangesDefault() };
foreach (var extraRange in Enum.GetValues<ExtraGlyphRanges>()) foreach (var extraRange in Enum.GetValues<ExtraGlyphRanges>())
if (Plugin.Config.ExtraGlyphRanges.HasFlag(extraRange)) if (Plugin.Config.ExtraGlyphRanges.HasFlag(extraRange))
ranges.Add(extraRange.Range()); ranges.Add(extraRange.Range());
+1 -1
View File
@@ -34,7 +34,7 @@ internal sealed unsafe class Chat : IDisposable
private readonly delegate* unmanaged<NetworkModule*, ulong, ushort, Utf8String*, Utf8String*, ushort, ushort, byte> SendTellNative = null!; private readonly delegate* unmanaged<NetworkModule*, ulong, ushort, Utf8String*, Utf8String*, ushort, ushort, byte> SendTellNative = null!;
// Client::UI::AddonChatLog.OnRefresh // Client::UI::AddonChatLog.OnRefresh
[Signature("40 53 56 57 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 49 8B F0 8B FA", DetourName = nameof(ChatLogRefreshDetour))] [Signature("40 53 57 41 57 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 4D 8B F8", DetourName = nameof(ChatLogRefreshDetour))]
private Hook<ChatLogRefreshDelegate>? ChatLogRefreshHook { get; init; } private Hook<ChatLogRefreshDelegate>? ChatLogRefreshHook { get; init; }
private delegate byte ChatLogRefreshDelegate(nint log, ushort eventId, AtkValue* value); private delegate byte ChatLogRefreshDelegate(nint log, ushort eventId, AtkValue* value);
+6 -5
View File
@@ -5,7 +5,9 @@ using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Hooking; using Dalamud.Hooking;
using Dalamud.Memory; using Dalamud.Memory;
using Dalamud.Utility;
using Dalamud.Utility.Signatures; using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.Enums;
using FFXIVClientStructs.FFXIV.Client.Game.UI; using FFXIVClientStructs.FFXIV.Client.Game.UI;
using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Agent; using FFXIVClientStructs.FFXIV.Client.UI.Agent;
@@ -21,10 +23,9 @@ namespace ChatTwo.GameFunctions;
internal unsafe class GameFunctions : IDisposable internal unsafe class GameFunctions : IDisposable
{ {
#region Hooks #region Hooks
private delegate nint ResolveTextCommandPlaceholderDelegate(nint a1, byte* placeholderText, byte a3, byte a4); [Signature("E8 ?? ?? ?? ?? 48 85 C0 0F 84 ?? ?? ?? ?? 48 8B D0 49 8D 4F", DetourName = nameof(ResolveTextCommandPlaceholderDetour))]
[Signature("E8 ?? ?? ?? ?? 49 8D 4F 18 4C 8B E0", DetourName = nameof(ResolveTextCommandPlaceholderDetour))]
private Hook<ResolveTextCommandPlaceholderDelegate>? ResolveTextCommandPlaceholderHook { get; init; } private Hook<ResolveTextCommandPlaceholderDelegate>? ResolveTextCommandPlaceholderHook { get; init; }
private delegate nint ResolveTextCommandPlaceholderDelegate(nint a1, byte* placeholderText, byte a3, byte a4);
#endregion #endregion
private Plugin Plugin { get; } private Plugin Plugin { get; }
@@ -109,7 +110,7 @@ internal unsafe class GameFunctions : IDisposable
return addon != null && addon->IsVisible; return addon != null && addon->IsVisible;
} }
internal static void OpenItemTooltip(uint id, ItemPayload.ItemKind itemKind) internal static void OpenItemTooltip(uint id, ItemKind itemKind)
{ {
var atkStage = AtkStage.Instance(); var atkStage = AtkStage.Instance();
var agent = AgentItemDetail.Instance(); var agent = AgentItemDetail.Instance();
@@ -119,7 +120,7 @@ internal unsafe class GameFunctions : IDisposable
if (agent == null || addon == null) if (agent == null || addon == null)
return; return;
agent->ItemKind = itemKind == ItemPayload.ItemKind.EventItem ? ItemDetailKind.ChatEventItem : ItemDetailKind.ChatItem; agent->DetailKind = itemKind == ItemKind.EventItem ? DetailKind.KeyItem : DetailKind.Item;
agent->TypeOrId = id; agent->TypeOrId = id;
agent->Index = 0; agent->Index = 0;
agent->Flag1 &= 0xEF; agent->Flag1 &= 0xEF;
+1 -1
View File
@@ -7,7 +7,7 @@ using Dalamud.Game.Config;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.System.String; using FFXIVClientStructs.FFXIV.Client.System.String;
using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Client.UI;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using ModifierFlag = ChatTwo.GameFunctions.Types.ModifierFlag; using ModifierFlag = ChatTwo.GameFunctions.Types.ModifierFlag;
namespace ChatTwo.GameFunctions; namespace ChatTwo.GameFunctions;
+7 -7
View File
@@ -310,13 +310,13 @@ internal partial class Message
var kind = item.ItemId switch var kind = item.ItemId switch
{ {
< 500_000 => ItemPayload.ItemKind.Normal, < 500_000 => ItemKind.Normal,
< 1_000_000 => ItemPayload.ItemKind.Collectible, < 1_000_000 => ItemKind.Collectible,
< 2_000_000 => ItemPayload.ItemKind.Hq, < 2_000_000 => ItemKind.Hq,
_ => ItemPayload.ItemKind.EventItem _ => ItemKind.EventItem
}; };
var name = kind != ItemPayload.ItemKind.EventItem var name = kind != ItemKind.EventItem
? Plugin.DataManager.GetExcelSheet<Item>().GetRow(item.ItemId).Name.ToString() ? Plugin.DataManager.GetExcelSheet<Item>().GetRow(item.ItemId).Name.ToString()
: Plugin.DataManager.GetExcelSheet<EventItem>().GetRow(item.ItemId).Name.ToString(); : Plugin.DataManager.GetExcelSheet<EventItem>().GetRow(item.ItemId).Name.ToString();
@@ -346,13 +346,13 @@ internal partial class Message
else if (split == "<flag>") else if (split == "<flag>")
{ {
var agentMap = AgentMap.Instance(); var agentMap = AgentMap.Instance();
if (!agentMap->IsFlagMarkerSet) if (agentMap->FlagMarkerCount == 0)
{ {
AddChunkWithMessage(text.NewWithStyle(chunk.Source, chunk.Link, split)); AddChunkWithMessage(text.NewWithStyle(chunk.Source, chunk.Link, split));
continue; continue;
} }
var mapCoords = agentMap->FlagMapMarker; var mapCoords = agentMap->FlagMapMarkers[0];
var rawX = (int)(MathF.Round(mapCoords.XFloat, 3, MidpointRounding.AwayFromZero) * 1000); var rawX = (int)(MathF.Round(mapCoords.XFloat, 3, MidpointRounding.AwayFromZero) * 1000);
var rawY = (int)(MathF.Round(mapCoords.YFloat, 3, MidpointRounding.AwayFromZero) * 1000); var rawY = (int)(MathF.Round(mapCoords.YFloat, 3, MidpointRounding.AwayFromZero) * 1000);
+19 -15
View File
@@ -18,7 +18,7 @@ using Dalamud.Interface.Utility.Raii;
using Dalamud.Utility; using Dalamud.Utility;
using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Component.GUI; using FFXIVClientStructs.FFXIV.Component.GUI;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using Lumina.Excel.Sheets; using Lumina.Excel.Sheets;
using Action = System.Action; using Action = System.Action;
@@ -263,17 +263,21 @@ public sealed class PayloadHandler
if (!Plugin.GameConfig.TryGet(UiControlOption.DetailTrackingType, out uint selected) || selected != 0) if (!Plugin.GameConfig.TryGet(UiControlOption.DetailTrackingType, out uint selected) || selected != 0)
return; return;
if (LogWindow.LastViewport != ImGuiHelpers.MainViewport.NativePtr) if (LogWindow.LastViewport != ImGuiHelpers.MainViewport.Handle)
return; return;
var atk = (AtkUnitBase*) args.Addon; var atk = args.Addon;
if (atk->WindowNode == null) if (atk.IsNull)
return; return;
if (!atk->IsVisible) var atkBase = (AtkUnitBase*)atk.Address;
if (atkBase->WindowNode == null)
return; return;
var component = atk->WindowNode->AtkResNode; if (!atkBase->IsVisible)
return;
var component = atkBase->WindowNode->AtkResNode;
var atkPos = new Vector2(component.ScreenX, component.ScreenY); var atkPos = new Vector2(component.ScreenX, component.ScreenY);
var atkSize = new Vector2(component.GetWidth() * component.ScaleX, component.GetHeight() * component.GetScaleY()); var atkSize = new Vector2(component.GetWidth() * component.ScaleX, component.GetHeight() * component.GetScaleY());
@@ -303,7 +307,7 @@ public sealed class PayloadHandler
if (!chatRect.HasOverlap(addonRect)) if (!chatRect.HasOverlap(addonRect))
{ {
atk->SetPosition((short) addonRect.X, (short) addonRect.Y); atkBase->SetPosition((short) addonRect.X, (short) addonRect.Y);
return; return;
} }
@@ -321,7 +325,7 @@ public sealed class PayloadHandler
if (!chatRect.HasOverlap(addonRect)) if (!chatRect.HasOverlap(addonRect))
{ {
atk->SetPosition((short) addonRect.X, (short) addonRect.Y); atkBase->SetPosition((short) addonRect.X, (short) addonRect.Y);
return; return;
} }
@@ -330,14 +334,14 @@ public sealed class PayloadHandler
var y = Math.Clamp(chatRect.SizeY - atkSize.Y, 0, float.MaxValue); var y = Math.Clamp(chatRect.SizeY - atkSize.Y, 0, float.MaxValue);
y -= isTop ? 0 : Plugin.Config.TooltipOffset; // offset to prevent cut-off on the bottom y -= isTop ? 0 : Plugin.Config.TooltipOffset; // offset to prevent cut-off on the bottom
atk->SetPosition((short) x, (short) y); atkBase->SetPosition((short) x, (short) y);
} }
private static void InlineIcon(IDalamudTextureWrap icon) private static void InlineIcon(IDalamudTextureWrap icon)
{ {
var cursor = ImGui.GetCursorPos(); var cursor = ImGui.GetCursorPos();
var size = ImGuiHelpers.ScaledVector2(32, 32); var size = ImGuiHelpers.ScaledVector2(32, 32);
ImGui.Image(icon.ImGuiHandle, size); ImGui.Image(icon.Handle, size);
ImGui.SameLine(); ImGui.SameLine();
ImGui.SetCursorPos(cursor + new Vector2(size.X + 4, size.Y - ImGui.GetTextLineHeightWithSpacing())); ImGui.SetCursorPos(cursor + new Vector2(size.X + 4, size.Y - ImGui.GetTextLineHeightWithSpacing()));
} }
@@ -373,7 +377,7 @@ public sealed class PayloadHandler
private void HoverItem(ItemPayload item) private void HoverItem(ItemPayload item)
{ {
if (item.Kind == ItemPayload.ItemKind.EventItem) if (item.Kind == ItemKind.EventItem)
{ {
HoverEventItem(item); HoverEventItem(item);
return; return;
@@ -489,7 +493,7 @@ public sealed class PayloadHandler
private void DrawItemPopup(ItemPayload payload) private void DrawItemPopup(ItemPayload payload)
{ {
if (payload.Kind == ItemPayload.ItemKind.EventItem) if (payload.Kind == ItemKind.EventItem)
{ {
DrawEventItemPopup(payload); DrawEventItemPopup(payload);
return; return;
@@ -498,7 +502,7 @@ public sealed class PayloadHandler
if (!Sheets.ItemSheet.TryGetRow(payload.ItemId, out var itemRow)) if (!Sheets.ItemSheet.TryGetRow(payload.ItemId, out var itemRow))
return; return;
var hq = payload.Kind == ItemPayload.ItemKind.Hq; var hq = payload.Kind == ItemKind.Hq;
if (Plugin.TextureProvider.GetFromGameIcon(new GameIconLookup(itemRow.Icon, hq)).GetWrapOrDefault() is { } icon) if (Plugin.TextureProvider.GetFromGameIcon(new GameIconLookup(itemRow.Icon, hq)).GetWrapOrDefault() is { } icon)
InlineIcon(icon); InlineIcon(icon);
@@ -506,7 +510,7 @@ public sealed class PayloadHandler
// hq symbol // hq symbol
if (hq) if (hq)
name.Payloads.Add(new TextPayload(" ")); name.Payloads.Add(new TextPayload(" "));
else if (payload.Kind == ItemPayload.ItemKind.Collectible) else if (payload.Kind == ItemKind.Collectible)
name.Payloads.Add(new TextPayload(" ")); name.Payloads.Add(new TextPayload(" "));
LogWindow.DrawChunks(ChunkUtil.ToChunks(name, ChunkSource.None, null).ToList(), false); LogWindow.DrawChunks(ChunkUtil.ToChunks(name, ChunkSource.None, null).ToList(), false);
@@ -538,7 +542,7 @@ public sealed class PayloadHandler
private void DrawEventItemPopup(ItemPayload payload) private void DrawEventItemPopup(ItemPayload payload)
{ {
if (payload.Kind != ItemPayload.ItemKind.EventItem) if (payload.Kind != ItemKind.EventItem)
return; return;
if (!Sheets.EventItemSheet.HasRow(payload.ItemId)) if (!Sheets.EventItemSheet.HasRow(payload.ItemId))
+1 -1
View File
@@ -12,7 +12,7 @@ using Dalamud.Interface.Windowing;
using Dalamud.IoC; using Dalamud.IoC;
using Dalamud.Plugin; using Dalamud.Plugin;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo; namespace ChatTwo;
+4 -2
View File
@@ -1,11 +1,13 @@
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
internal class AutoCompleteInfo { internal class AutoCompleteInfo
{
internal string ToComplete; internal string ToComplete;
internal int StartPos { get; } internal int StartPos { get; }
internal int EndPos { get; } internal int EndPos { get; }
internal AutoCompleteInfo(string toComplete, int startPos, int endPos) { internal AutoCompleteInfo(string toComplete, int startPos, int endPos)
{
ToComplete = toComplete; ToComplete = toComplete;
StartPos = startPos; StartPos = startPos;
EndPos = endPos; EndPos = endPos;
+33 -35
View File
@@ -18,7 +18,7 @@ using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using Dalamud.Memory; using Dalamud.Memory;
using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Client.UI;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using Lumina.Excel.Sheets; using Lumina.Excel.Sheets;
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
@@ -443,10 +443,10 @@ public sealed class ChatLogWindow : Window
if (!Plugin.Config.ShowTitleBar) if (!Plugin.Config.ShowTitleBar)
Flags |= ImGuiWindowFlags.NoTitleBar; Flags |= ImGuiWindowFlags.NoTitleBar;
if (LastViewport == ImGuiHelpers.MainViewport.NativePtr && !WasDocked) if (LastViewport == ImGuiHelpers.MainViewport.Handle && !WasDocked)
BgAlpha = Plugin.Config.WindowAlpha / 100f; BgAlpha = Plugin.Config.WindowAlpha / 100f;
LastViewport = ImGui.GetWindowViewport().NativePtr; LastViewport = ImGui.GetWindowViewport().Handle;
WasDocked = ImGui.IsWindowDocked(); WasDocked = ImGui.IsWindowDocked();
} }
@@ -530,7 +530,7 @@ public sealed class ChatLogWindow : Window
if (resized) if (resized)
LastResize.Restart(); LastResize.Restart();
LastViewport = ImGui.GetWindowViewport().NativePtr; LastViewport = ImGui.GetWindowViewport().Handle;
WasDocked = ImGui.IsWindowDocked(); WasDocked = ImGui.IsWindowDocked();
if (IsChatMode && Plugin.InputPreview.IsDrawable) if (IsChatMode && Plugin.InputPreview.IsDrawable)
@@ -1430,7 +1430,7 @@ public sealed class ChatLogWindow : Window
for (var i = 0; i < 10 && i < AutoCompleteList.Count; i++) for (var i = 0; i < 10 && i < AutoCompleteList.Count; i++)
{ {
var num = (i + 1) % 10; var num = (i + 1) % 10;
var key = ImGuiKey._0 + num; var key = ImGuiKey.Key0 + num;
var key2 = ImGuiKey.Keypad0 + num; var key2 = ImGuiKey.Keypad0 + num;
if (ImGui.IsKeyDown(key) || ImGui.IsKeyDown(key2)) if (ImGui.IsKeyDown(key) || ImGui.IsKeyDown(key2))
selected = i; selected = i;
@@ -1460,7 +1460,7 @@ public sealed class ChatLogWindow : Window
if (!child.Success) if (!child.Success)
return; return;
var clipper = new ImGuiListClipperPtr(ImGuiNative.ImGuiListClipper_ImGuiListClipper()); var clipper = new ImGuiListClipperPtr(ImGuiNative.ImGuiListClipper());
clipper.Begin(AutoCompleteList.Count); clipper.Begin(AutoCompleteList.Count);
while (clipper.Step()) while (clipper.Step())
@@ -1503,19 +1503,19 @@ public sealed class ChatLogWindow : Window
ImGui.SetScrollFromPosY(selectedPos - ImGui.GetWindowPos().Y); ImGui.SetScrollFromPosY(selectedPos - ImGui.GetWindowPos().Y);
} }
private unsafe int AutoCompleteCallback(ImGuiInputTextCallbackData* data) private int AutoCompleteCallback(scoped ref ImGuiInputTextCallbackData data)
{ {
if (FixCursor && AutoCompleteInfo != null) if (FixCursor && AutoCompleteInfo != null)
{ {
FixCursor = false; FixCursor = false;
data->CursorPos = AutoCompleteInfo.ToComplete.Length; data.CursorPos = AutoCompleteInfo.ToComplete.Length;
data->SelectionStart = data->SelectionEnd = data->CursorPos; data.SelectionStart = data.SelectionEnd = data.CursorPos;
} }
if (AutoCompleteList == null) if (AutoCompleteList == null)
return 0; return 0;
switch (data->EventKey) switch (data.EventKey)
{ {
case ImGuiKey.UpArrow: case ImGuiKey.UpArrow:
if (AutoCompleteSelection == 0) if (AutoCompleteSelection == 0)
@@ -1550,7 +1550,7 @@ public sealed class ChatLogWindow : Window
return 0; return 0;
} }
private unsafe int Callback(ImGuiInputTextCallbackData* data) private unsafe int Callback(scoped ref ImGuiInputTextCallbackData data)
{ {
// We play the opening sound here only if closing sound has been played before // We play the opening sound here only if closing sound has been played before
if (Plugin.Config.PlaySounds && PlayedClosingSound) if (Plugin.Config.PlaySounds && PlayedClosingSound)
@@ -1559,22 +1559,20 @@ public sealed class ChatLogWindow : Window
UIGlobals.PlaySoundEffect(ChatOpenSfx); UIGlobals.PlaySoundEffect(ChatOpenSfx);
} }
var ptr = new ImGuiInputTextCallbackDataPtr(data);
// Set the cursor pos to the user selected // Set the cursor pos to the user selected
if (Plugin.InputPreview.SelectedCursorPos != -1) if (Plugin.InputPreview.SelectedCursorPos != -1)
ptr.CursorPos = Plugin.InputPreview.SelectedCursorPos; data.CursorPos = Plugin.InputPreview.SelectedCursorPos;
Plugin.InputPreview.SelectedCursorPos = -1; Plugin.InputPreview.SelectedCursorPos = -1;
CursorPos = ptr.CursorPos; CursorPos = data.CursorPos;
if (data->EventFlag == ImGuiInputTextFlags.CallbackCompletion) if (data.EventFlag == ImGuiInputTextFlags.CallbackCompletion)
{ {
if (ptr.CursorPos == 0) if (data.CursorPos == 0)
{ {
AutoCompleteInfo = new AutoCompleteInfo( AutoCompleteInfo = new AutoCompleteInfo(
string.Empty, string.Empty,
ptr.CursorPos, data.CursorPos,
ptr.CursorPos data.CursorPos
); );
AutoCompleteOpen = true; AutoCompleteOpen = true;
AutoCompleteSelection = 0; AutoCompleteSelection = 0;
@@ -1583,14 +1581,14 @@ public sealed class ChatLogWindow : Window
} }
int white; int white;
for (white = ptr.CursorPos - 1; white >= 0; white--) for (white = data.CursorPos - 1; white >= 0; white--)
if (data->Buf[white] == ' ') if (data.Buf[white] == ' ')
break; break;
var start = ptr.Buf + white + 1; var start = data.Buf + white + 1;
var end = ptr.CursorPos - white - 1; var end = data.CursorPos - white - 1;
var utf8Message = Marshal.PtrToStringUTF8(start, end); var utf8Message = Marshal.PtrToStringUTF8((nint)start, end);
var correctedCursor = ptr.CursorPos - (end - utf8Message.Length); var correctedCursor = data.CursorPos - (end - utf8Message.Length);
AutoCompleteInfo = new AutoCompleteInfo( AutoCompleteInfo = new AutoCompleteInfo(
utf8Message, utf8Message,
white + 1, white + 1,
@@ -1601,20 +1599,20 @@ public sealed class ChatLogWindow : Window
return 0; return 0;
} }
if (data->EventFlag == ImGuiInputTextFlags.CallbackCharFilter) if (data.EventFlag == ImGuiInputTextFlags.CallbackCharFilter)
if (!Plugin.Functions.Chat.IsCharValid((char) ptr.EventChar)) if (!Plugin.Functions.Chat.IsCharValid((char) data.EventChar))
return 1; return 1;
if (Activate) if (Activate)
{ {
Activate = false; Activate = false;
data->CursorPos = ActivatePos > -1 ? ActivatePos : Chat.Length; data.CursorPos = ActivatePos > -1 ? ActivatePos : Chat.Length;
data->SelectionStart = data->SelectionEnd = data->CursorPos; data.SelectionStart = data.SelectionEnd = data.CursorPos;
ActivatePos = -1; ActivatePos = -1;
} }
Plugin.CommandHelpWindow.IsOpen = false; Plugin.CommandHelpWindow.IsOpen = false;
var text = MemoryHelper.ReadString((nint) data->Buf, data->BufTextLen); var text = MemoryHelper.ReadString((nint) data.Buf, data.BufTextLen);
if (text.StartsWith('/')) if (text.StartsWith('/'))
{ {
var command = text.Split(' ')[0]; var command = text.Split(' ')[0];
@@ -1626,11 +1624,11 @@ public sealed class ChatLogWindow : Window
Plugin.CommandHelpWindow.UpdateContent(cmd.Value); Plugin.CommandHelpWindow.UpdateContent(cmd.Value);
} }
if (data->EventFlag != ImGuiInputTextFlags.CallbackHistory) if (data.EventFlag != ImGuiInputTextFlags.CallbackHistory)
return 0; return 0;
var prevPos = InputBacklogIdx; var prevPos = InputBacklogIdx;
switch (data->EventKey) switch (data.EventKey)
{ {
case ImGuiKey.UpArrow: case ImGuiKey.UpArrow:
switch (InputBacklogIdx) switch (InputBacklogIdx)
@@ -1662,8 +1660,8 @@ public sealed class ChatLogWindow : Window
return 0; return 0;
var historyStr = InputBacklogIdx >= 0 ? InputBacklog[InputBacklogIdx] : string.Empty; var historyStr = InputBacklogIdx >= 0 ? InputBacklog[InputBacklogIdx] : string.Empty;
ptr.DeleteChars(0, ptr.BufTextLen); data.DeleteChars(0, data.BufTextLen);
ptr.InsertChars(0, historyStr); data.InsertChars(0, historyStr);
return 0; return 0;
} }
@@ -1793,7 +1791,7 @@ public sealed class ChatLogWindow : Window
var uv0 = new Vector2(entry.Left, entry.Top + 170) * 2 / texSize; var uv0 = new Vector2(entry.Left, entry.Top + 170) * 2 / texSize;
var uv1 = new Vector2(entry.Left + entry.Width, entry.Top + entry.Height + 170) * 2 / texSize; var uv1 = new Vector2(entry.Left + entry.Width, entry.Top + entry.Height + 170) * 2 / texSize;
ImGui.Image(iconTexture.ImGuiHandle, size, uv0, uv1); ImGui.Image(iconTexture.Handle, size, uv0, uv1);
ImGuiUtil.PostPayload(chunk, handler); ImGuiUtil.PostPayload(chunk, handler);
} }
+1 -1
View File
@@ -3,7 +3,7 @@ using ChatTwo.Util;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using Dalamud.Utility; using Dalamud.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using Lumina.Excel.Sheets; using Lumina.Excel.Sheets;
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
+1 -1
View File
@@ -9,7 +9,7 @@ using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
+1 -1
View File
@@ -4,7 +4,7 @@ using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using FFXIVClientStructs.FFXIV.Client.UI.Agent; using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using Lumina.Text.ReadOnly; using Lumina.Text.ReadOnly;
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
+1 -1
View File
@@ -10,7 +10,7 @@ using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
+1 -1
View File
@@ -2,7 +2,7 @@
using Dalamud.Interface.Style; using Dalamud.Interface.Style;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
+3 -3
View File
@@ -6,8 +6,8 @@ using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using Dalamud.Utility;
using DalamudPartyFinderPayload = Dalamud.Game.Text.SeStringHandling.Payloads.PartyFinderPayload; using DalamudPartyFinderPayload = Dalamud.Game.Text.SeStringHandling.Payloads.PartyFinderPayload;
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
@@ -146,7 +146,7 @@ public class SeStringDebugger : Window
{ "RawItemId", item.RawItemId.ToString() }, { "RawItemId", item.RawItemId.ToString() },
{ "Kind", EnumName(item.Kind) }, { "Kind", EnumName(item.Kind) },
{ "IsHQ", item.IsHQ.ToString() }, { "IsHQ", item.IsHQ.ToString() },
{ "Item.Name", item.Kind == ItemPayload.ItemKind.EventItem ? Sheets.EventItemSheet.GetRow(item.ItemId).Name.ExtractText() : Sheets.ItemSheet.GetRow(item.ItemId).Name.ExtractText() }, { "Item.Name", item.Kind == ItemKind.EventItem ? Sheets.EventItemSheet.GetRow(item.ItemId).Name.ExtractText() : Sheets.ItemSheet.GetRow(item.ItemId).Name.ExtractText() },
}); });
break; break;
} }
+1 -1
View File
@@ -5,7 +5,7 @@ using ChatTwo.Util;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using Dalamud.Utility; using Dalamud.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui; namespace ChatTwo.Ui;
+1 -1
View File
@@ -5,7 +5,7 @@ using Dalamud.Interface;
using Dalamud.Interface.Colors; using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -1,7 +1,7 @@
using ChatTwo.Resources; using ChatTwo.Resources;
using ChatTwo.Util; using ChatTwo.Util;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -2,7 +2,7 @@ using ChatTwo.Code;
using ChatTwo.Resources; using ChatTwo.Resources;
using ChatTwo.Util; using ChatTwo.Util;
using Dalamud.Interface; using Dalamud.Interface;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -2,7 +2,7 @@ using ChatTwo.Resources;
using ChatTwo.Util; using ChatTwo.Util;
using Dalamud.Interface.Style; using Dalamud.Interface.Style;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -6,7 +6,7 @@ using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface.ImGuiNotification; using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -2,7 +2,7 @@ using ChatTwo.Code;
using ChatTwo.Resources; using ChatTwo.Resources;
using ChatTwo.Util; using ChatTwo.Util;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -4,7 +4,7 @@ using ChatTwo.Util;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Colors; using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -2,7 +2,7 @@ using ChatTwo.Resources;
using ChatTwo.Util; using ChatTwo.Util;
using Dalamud; using Dalamud;
using Dalamud.Interface.FontIdentifier; using Dalamud.Interface.FontIdentifier;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -1,6 +1,6 @@
using ChatTwo.Resources; using ChatTwo.Resources;
using ChatTwo.Util; using ChatTwo.Util;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -1,6 +1,6 @@
using ChatTwo.Resources; using ChatTwo.Resources;
using ChatTwo.Util; using ChatTwo.Util;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -3,7 +3,7 @@ using ChatTwo.Resources;
using ChatTwo.Util; using ChatTwo.Util;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -4,7 +4,7 @@ using Dalamud.Interface;
using Dalamud.Interface.Colors; using Dalamud.Interface.Colors;
using Dalamud.Interface.ImGuiNotification; using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs; namespace ChatTwo.Ui.SettingsTabs;
+3
View File
@@ -83,6 +83,9 @@ internal static class AutoTranslate
{ {
if (lookup is not ("" or "@")) if (lookup is not ("" or "@"))
{ {
// SE added whitespace to the newest additions, but ParseOrThrow doesn't see them as valid
lookup = lookup.Replace(" ", "");
var (sheetName, selector) = parser.ParseOrThrow(lookup); var (sheetName, selector) = parser.ParseOrThrow(lookup);
var sheet = Plugin.DataManager.Excel.GetSheet<WorkingRawRow>(name: sheetName); var sheet = Plugin.DataManager.Excel.GetSheet<WorkingRawRow>(name: sheetName);
+2 -2
View File
@@ -7,7 +7,7 @@ using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using Dalamud.Utility; using Dalamud.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Util; namespace ChatTwo.Util;
@@ -91,7 +91,7 @@ public static class DateWidget
var arrowLeftWidth = ImGui.CalcTextSize(arrowLeft).X; var arrowLeftWidth = ImGui.CalcTextSize(arrowLeft).X;
var arrowRightWidth = ImGui.CalcTextSize(arrowRight).X; var arrowRightWidth = ImGui.CalcTextSize(arrowRight).X;
var labelSize = ImGui.CalcTextSize(label, 0, true); var labelSize = ImGui.CalcTextSize(label, true, 0);
var widthRequiredByCalendar = (2.0f * arrowLeftWidth) + (2.0f * arrowRightWidth) + LongestMonthWidth + ImGui.CalcTextSize("9999").X + (120.0f * ImGuiHelpers.GlobalScale); var widthRequiredByCalendar = (2.0f * arrowLeftWidth) + (2.0f * arrowRightWidth) + LongestMonthWidth + ImGui.CalcTextSize("9999").X + (120.0f * ImGuiHelpers.GlobalScale);
var popupHeight = ((labelSize.Y + (2 * style.ItemSpacing.Y)) * HeightInItems) + (style.FramePadding.Y * 3); var popupHeight = ((labelSize.Y + (2 * style.ItemSpacing.Y)) * HeightInItems) + (style.FramePadding.Y * 3);
+16 -16
View File
@@ -12,7 +12,7 @@ using Dalamud.Interface.ImGuiFontChooserDialog;
using Dalamud.Interface.Style; using Dalamud.Interface.Style;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace ChatTwo.Util; namespace ChatTwo.Util;
@@ -64,7 +64,7 @@ internal static class ImGuiUtil
{ {
var oldPos = ImGui.GetCursorScreenPos(); var oldPos = ImGui.GetCursorScreenPos();
ImGuiNative.igTextUnformatted(text, textEnd); ImGuiNative.TextUnformatted(text, textEnd);
PostPayload(chunk, handler); PostPayload(chunk, handler);
if (!ReferenceEquals(LastLink, chunk.Link)) if (!ReferenceEquals(LastLink, chunk.Link))
@@ -107,7 +107,7 @@ internal static class ImGuiUtil
} }
var widthLeft = ImGui.GetContentRegionAvail().X; var widthLeft = ImGui.GetContentRegionAvail().X;
var endPrevLine = ImGuiNative.ImFont_CalcWordWrapPositionA(ImGui.GetFont().NativePtr, ImGuiHelpers.GlobalScale, text, textEnd, widthLeft); var endPrevLine = ImGuiNative.CalcWordWrapPositionA(ImGui.GetFont().Handle, ImGuiHelpers.GlobalScale, text, textEnd, widthLeft);
if (endPrevLine == null) if (endPrevLine == null)
continue; continue;
@@ -126,7 +126,7 @@ internal static class ImGuiUtil
else else
{ {
// check if the next bit is longer than the entire line width // check if the next bit is longer than the entire line width
var wrapPos = ImGuiNative.ImFont_CalcWordWrapPositionA(ImGui.GetFont().NativePtr, ImGuiHelpers.GlobalScale, text, firstSpace, lineWidth); var wrapPos = ImGuiNative.CalcWordWrapPositionA(ImGui.GetFont().Handle, ImGuiHelpers.GlobalScale, text, firstSpace, lineWidth);
// only go to next line is it's going to wrap at the space // only go to next line is it's going to wrap at the space
if (wrapPos >= firstSpace) if (wrapPos >= firstSpace)
@@ -144,7 +144,7 @@ internal static class ImGuiUtil
if (*text == ' ') if (*text == ' ')
++text; ++text;
var newEnd = ImGuiNative.ImFont_CalcWordWrapPositionA(ImGui.GetFont().NativePtr, ImGuiHelpers.GlobalScale, text, textEnd, widthLeft); var newEnd = ImGuiNative.CalcWordWrapPositionA(ImGui.GetFont().Handle, ImGuiHelpers.GlobalScale, text, textEnd, widthLeft);
if (properBreak && newEnd == endPrevLine) if (properBreak && newEnd == endPrevLine)
break; break;
@@ -257,7 +257,7 @@ internal static class ImGuiUtil
{ {
ImGui.TextUnformatted(label); ImGui.TextUnformatted(label);
ImGui.SetNextItemWidth(-1); ImGui.SetNextItemWidth(-1);
var r = ImGui.InputInt($"##{label}", ref value, step, stepFast, flags); var r = ImGui.InputInt($"##{label}", ref value, step, stepFast, flags: flags);
HelpText(description); HelpText(description);
return r; return r;
@@ -475,16 +475,16 @@ internal static class ImGuiUtil
VirtualKey.SNAPSHOT => ImGuiKey.PrintScreen, VirtualKey.SNAPSHOT => ImGuiKey.PrintScreen,
VirtualKey.INSERT => ImGuiKey.Insert, VirtualKey.INSERT => ImGuiKey.Insert,
VirtualKey.DELETE => ImGuiKey.Delete, VirtualKey.DELETE => ImGuiKey.Delete,
VirtualKey.KEY_0 => ImGuiKey._0, VirtualKey.KEY_0 => ImGuiKey.Key0,
VirtualKey.KEY_1 => ImGuiKey._1, VirtualKey.KEY_1 => ImGuiKey.Key1,
VirtualKey.KEY_2 => ImGuiKey._2, VirtualKey.KEY_2 => ImGuiKey.Key2,
VirtualKey.KEY_3 => ImGuiKey._3, VirtualKey.KEY_3 => ImGuiKey.Key3,
VirtualKey.KEY_4 => ImGuiKey._4, VirtualKey.KEY_4 => ImGuiKey.Key4,
VirtualKey.KEY_5 => ImGuiKey._5, VirtualKey.KEY_5 => ImGuiKey.Key5,
VirtualKey.KEY_6 => ImGuiKey._6, VirtualKey.KEY_6 => ImGuiKey.Key6,
VirtualKey.KEY_7 => ImGuiKey._7, VirtualKey.KEY_7 => ImGuiKey.Key7,
VirtualKey.KEY_8 => ImGuiKey._8, VirtualKey.KEY_8 => ImGuiKey.Key8,
VirtualKey.KEY_9 => ImGuiKey._9, VirtualKey.KEY_9 => ImGuiKey.Key9,
VirtualKey.A => ImGuiKey.A, VirtualKey.A => ImGuiKey.A,
VirtualKey.B => ImGuiKey.B, VirtualKey.B => ImGuiKey.B,
VirtualKey.C => ImGuiKey.C, VirtualKey.C => ImGuiKey.C,
+2 -2
View File
@@ -1,6 +1,6 @@
using System.Numerics; using System.Numerics;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using System.Collections; using System.Collections;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
@@ -147,7 +147,7 @@ public unsafe class ListClipper : IEnumerable<(int, int)>, IDisposable
CurrentColumns = cols; CurrentColumns = cols;
CurrentRows = TwoDimensional ? items : (int)MathF.Ceiling((float)items / CurrentColumns); CurrentRows = TwoDimensional ? items : (int)MathF.Ceiling((float)items / CurrentColumns);
ItemRemainder = !TwoDimensional ? items % CurrentColumns : 0; ItemRemainder = !TwoDimensional ? items % CurrentColumns : 0;
Clipper = new ImGuiListClipperPtr(ImGuiNative.ImGuiListClipper_ImGuiListClipper()); Clipper = new ImGuiListClipperPtr(ImGuiNative.ImGuiListClipper());
Clipper.Begin(CurrentRows, itemHeight); Clipper.Begin(CurrentRows, itemHeight);
} }
+15 -15
View File
@@ -4,9 +4,9 @@
"net9.0-windows7.0": { "net9.0-windows7.0": {
"DalamudPackager": { "DalamudPackager": {
"type": "Direct", "type": "Direct",
"requested": "[12.0.0, )", "requested": "[13.0.0, )",
"resolved": "12.0.0", "resolved": "13.0.0",
"contentHash": "J5TJLV3f16T/E2H2P17ClWjtfEBPpq3yxvqW46eN36JCm6wR+EaoaYkqG9Rm5sHqs3/nK/vKjWWyvEs/jhKoXw==" "contentHash": "Mb3cUDSK/vDPQ8gQIeuCw03EMYrej1B4J44a1AvIJ9C759p9XeqdU9Hg4WgOmlnlPe0G7ILTD32PKSUpkQNa8w=="
}, },
"DotNet.ReproducibleBuilds": { "DotNet.ReproducibleBuilds": {
"type": "Direct", "type": "Direct",
@@ -16,12 +16,12 @@
}, },
"MessagePack": { "MessagePack": {
"type": "Direct", "type": "Direct",
"requested": "[3.1.3, )", "requested": "[3.1.4, )",
"resolved": "3.1.3", "resolved": "3.1.4",
"contentHash": "UiNv3fknvPzh5W+S0VV96R17RBZQQU71qgmsMnjjRZU2rtQM/XcTnOB+klT2dA6T1mxjnNKYrEm164AoXvGmYg==", "contentHash": "BH0wlHWmVoZpbAPyyt2Awbq30C+ZsS3eHSkYdnyUAbqVJ22fAJDzn2xTieBeoT5QlcBzp61vHcv878YJGfi3mg==",
"dependencies": { "dependencies": {
"MessagePack.Annotations": "3.1.3", "MessagePack.Annotations": "3.1.4",
"MessagePackAnalyzer": "3.1.3", "MessagePackAnalyzer": "3.1.4",
"Microsoft.NET.StringTools": "17.11.4" "Microsoft.NET.StringTools": "17.11.4"
} }
}, },
@@ -44,9 +44,9 @@
}, },
"SixLabors.ImageSharp": { "SixLabors.ImageSharp": {
"type": "Direct", "type": "Direct",
"requested": "[3.1.7, )", "requested": "[3.1.11, )",
"resolved": "3.1.7", "resolved": "3.1.11",
"contentHash": "9fIOOAsyLFid6qKypM2Iy0Z3Q9yoanV8VoYAHtI2sYGMNKzhvRTjgFDHonIiVe+ANtxIxM6SuqUzj0r91nItpA==" "contentHash": "JfPLyigLthuE50yi6tMt7Amrenr/fA31t2CvJyhy/kQmfulIBAqo5T/YFUSRHtuYPXRSaUHygFeh6Qd933EoSw=="
}, },
"Watson.Lite": { "Watson.Lite": {
"type": "Direct", "type": "Direct",
@@ -70,13 +70,13 @@
}, },
"MessagePack.Annotations": { "MessagePack.Annotations": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.3", "resolved": "3.1.4",
"contentHash": "XTy4njgTAf6UVBKFj7c7ad5R0WVKbvAgkbYZy4f00kplzX2T3VOQ34AUke/Vn/QgQZ7ETdd34/IDWS3KBInSGA==" "contentHash": "aVWrDAkCdqxwQsz/q0ldPh2EFn48M99YUzE9OvZjMq2RNLKz4o2z88iGFvSvbMqOWRweRvKPHBJZe22PRqzslQ=="
}, },
"MessagePackAnalyzer": { "MessagePackAnalyzer": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.3", "resolved": "3.1.4",
"contentHash": "19u1oVNv2brCs5F/jma8O8CnsKMMpYwNqD0CAEDEzvqwDTAhqC9r7xHZP4stPb3APs/ryO/zVn7LvjoEHfvs7Q==" "contentHash": "CTaSsN/liJ7MhLCAB7Z4ZLBNuVGCq9lt2BT/cbrc9vzGv89yK3CqIA+z9T19a11eQYl9etZHL6MQJgCqECRVpg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",