diff --git a/HSUI.csproj b/HSUI.csproj
index 6ed7bd0..87c6fbd 100644
--- a/HSUI.csproj
+++ b/HSUI.csproj
@@ -9,9 +9,9 @@
HSUI
- 1.0.8.7
- 1.0.8.7
- 1.0.8.7
+ 1.0.8.8
+ 1.0.8.8
+ 1.0.8.8
diff --git a/HSUI.json b/HSUI.json
index b2557d1..8efb16b 100644
--- a/HSUI.json
+++ b/HSUI.json
@@ -2,7 +2,7 @@
"Author": "Knack117",
"Name": "HSUI",
"InternalName": "HSUI",
- "AssemblyVersion": "1.0.8.7",
+ "AssemblyVersion": "1.0.8.8",
"Description": "HSUI provides a highly configurable HUD replacement for FFXIV, recreated from DelvUI using KamiToolKit, FFXIVClientStructs, and Dalamud. Features unit frames, castbars, job gauges, nameplates, party frames, status effects, enemy list, configurable hotbars with drag-and-drop, and profiles.",
"ApplicableVersion": "any",
"RepoUrl": "https://github.com/Knack117/HSUI",
diff --git a/Helpers/ActionBarsManager.cs b/Helpers/ActionBarsManager.cs
index 87d0990..456e9a7 100644
--- a/Helpers/ActionBarsManager.cs
+++ b/Helpers/ActionBarsManager.cs
@@ -122,10 +122,11 @@ namespace HSUI.Helpers
continue;
}
- // Populate IconId from ApparentSlotType/ApparentActionId. Required for GearSet and other
- // dynamic types: the game derives the job icon from the gearset (e.g. first equipment slot).
- // Without this, when the first gear slot changes the cached IconId can be 0 and the bar shows a blank.
- slot->LoadIconId();
+ // For GearSet slots, refresh IconId from the gearset (e.g. job icon from first equipment slot).
+ // Only call for already-synced GearSet slots: calling LoadIconId() on other types or before the
+ // game has synced a just-dropped slot can prevent the drop from sticking.
+ if (slot->ApparentSlotType == RaptureHotbarModule.HotbarSlotType.GearSet)
+ slot->LoadIconId();
bool usable = slot->IsSlotUsable(slot->ApparentSlotType, slot->ApparentActionId);
uint iconId = slot->IconId;
diff --git a/Interface/GeneralElements/ActionBarsHud.cs b/Interface/GeneralElements/ActionBarsHud.cs
index 5e877b0..766b20b 100644
--- a/Interface/GeneralElements/ActionBarsHud.cs
+++ b/Interface/GeneralElements/ActionBarsHud.cs
@@ -602,7 +602,7 @@ namespace HSUI.Interface.GeneralElements
if (ImGui.IsMouseReleased(ImGuiMouseButton.Left))
{
int releaseIdx = GetSlotIndexAtPosition(topLeft, barSize, slotSize, pad, Config.SlotCount, Config.GetLayoutGrid().Cols, mp, debug);
- if (releaseIdx >= 0 && slotType != RaptureHotbarModule.HotbarSlotType.Empty && (id != 0 || slotType == RaptureHotbarModule.HotbarSlotType.Macro))
+ if (releaseIdx >= 0 && slotType != RaptureHotbarModule.HotbarSlotType.Empty && (id != 0 || slotType == RaptureHotbarModule.HotbarSlotType.Macro || slotType == RaptureHotbarModule.HotbarSlotType.GearSet))
{
if (!ImGui.GetIO().KeyShift)
{
@@ -701,7 +701,7 @@ namespace HSUI.Interface.GeneralElements
// stale (e.g. from macro menu UI), causing wrong placements (macro drag -> GeneralAction placed).
// If we never got valid payload (e.g. Macro Int2=0), skip the place.
bool hasValidPayload = slotType != RaptureHotbarModule.HotbarSlotType.Empty &&
- (id != 0 || slotType == RaptureHotbarModule.HotbarSlotType.Macro);
+ (id != 0 || slotType == RaptureHotbarModule.HotbarSlotType.Macro || slotType == RaptureHotbarModule.HotbarSlotType.GearSet);
if (hasValidPayload)
{
@@ -1092,7 +1092,9 @@ namespace HSUI.Interface.GeneralElements
private static unsafe uint GetIconIdForPayload(RaptureHotbarModule.HotbarSlotType slotType, uint id)
{
- if (id == 0) return 0;
+ // id 0 is valid for GearSet (first gearset in list) and Macro; don't short-circuit for those
+ if (id == 0 && slotType != RaptureHotbarModule.HotbarSlotType.GearSet && slotType != RaptureHotbarModule.HotbarSlotType.Macro)
+ return 0;
if (slotType == RaptureHotbarModule.HotbarSlotType.Macro)
{
var macroModule = RaptureMacroModule.Instance();
diff --git a/changelog.md b/changelog.md
index fe49f55..79d792e 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+# 1.0.8.8
+- **Hotbars**: Only refresh icon via LoadIconId() for GearSet slots so drag-and-drop of gearsets onto the bar works again.
+- **Hotbars**: Allow gearset index 0 (top-most gearset in list) — drop validation and icon lookup now accept id 0 for GearSet type.
+
# 1.0.8.7
- **Hotbars**: Fixed Gearset/Job Gear Set icon clearing when the first equipment slot in the gearset changes — call LoadIconId() before reading slot IconId so the game populates the icon from the gearset (e.g. job icon).
diff --git a/pluginmaster.json b/pluginmaster.json
index 3c010a1..66a373a 100644
--- a/pluginmaster.json
+++ b/pluginmaster.json
@@ -1 +1 @@
-[{"Author":"Knack117","Name":"HSUI","Punchline":"A modern HUD replacement built for customization.","Description":"HSUI provides a highly configurable HUD replacement for FFXIV, recreated from DelvUI using KamiToolKit, FFXIVClientStructs, and Dalamud. Features unit frames, castbars, job gauges, nameplates, party frames, status effects, enemy list, configurable hotbars with drag-and-drop, and profiles.","Changelog":"1.0.8.7: Fixed Gearset/Job Gear Set icon clearing when first equipment slot changes. 1.0.8.6: Crafting action tooltips now show full description instead of action name. 1.0.8.4: Alliance Frames 1 and 2 fix in raids; crafting action tooltips; Hide in duty no longer hides alliance frames. 1.0.8.3: Fix left-click staying broken after disable. 1.0.8.2: Charge icons stay lit until all charges spent.","InternalName":"HSUI","AssemblyVersion":"1.0.8.7","RepoUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI","ApplicableVersion":"any","Tags":["UI","HUD","Unit Frames","Nameplates","Party Frames","Hotbars"],"CategoryTags":["UI"],"DalamudApiLevel":14,"IconUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/raw/branch/main/Media/Images/icon.png","ImageUrls":[],"DownloadLinkInstall":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.7/latest.zip","IsHide":false,"IsTestingExclusive":false,"DownloadLinkTesting":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.7/latest.zip","DownloadLinkUpdate":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.7/latest.zip","LastUpdate":"1739145600"}]
+[{"Author":"Knack117","Name":"HSUI","Punchline":"A modern HUD replacement built for customization.","Description":"HSUI provides a highly configurable HUD replacement for FFXIV, recreated from DelvUI using KamiToolKit, FFXIVClientStructs, and Dalamud. Features unit frames, castbars, job gauges, nameplates, party frames, status effects, enemy list, configurable hotbars with drag-and-drop, and profiles.","Changelog":"1.0.8.8: Gearset drag-drop fix; allow first gearset (index 0) on bar. 1.0.8.7: Fixed Gearset/Job Gear Set icon clearing when first equipment slot changes. 1.0.8.6: Crafting action tooltips now show full description instead of action name. 1.0.8.4: Alliance Frames 1 and 2 fix in raids; crafting action tooltips; Hide in duty no longer hides alliance frames. 1.0.8.3: Fix left-click staying broken after disable. 1.0.8.2: Charge icons stay lit until all charges spent.","InternalName":"HSUI","AssemblyVersion":"1.0.8.8","RepoUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI","ApplicableVersion":"any","Tags":["UI","HUD","Unit Frames","Nameplates","Party Frames","Hotbars"],"CategoryTags":["UI"],"DalamudApiLevel":14,"IconUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/raw/branch/main/Media/Images/icon.png","ImageUrls":[],"DownloadLinkInstall":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.8/latest.zip","IsHide":false,"IsTestingExclusive":false,"DownloadLinkTesting":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.8/latest.zip","DownloadLinkUpdate":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.8/latest.zip","LastUpdate":"1739232000"}]