From 28d7d3ec00a568a755fc3d3f0e6f28426928f122 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Wed, 18 Mar 2026 03:11:34 -0700 Subject: [PATCH] feat: track mouseover on party frames; fix /cast !spell; update macro editor hint --- src/ui/game_screen.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index 0fa503bf..dd1683f9 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -6363,6 +6363,9 @@ void GameScreen::sendChatMessage(game::GameHandler& gameHandler) { while (!spellArg.empty() && spellArg.back() == ' ') spellArg.pop_back(); } + // Strip leading '!' (WoW /cast !Spell forces recast without toggling off) + if (!spellArg.empty() && spellArg.front() == '!') spellArg.erase(spellArg.begin()); + // Support numeric spell ID: /cast 133 or /cast #133 { std::string numStr = spellArg; @@ -8227,7 +8230,7 @@ void GameScreen::renderActionBar(game::GameHandler& gameHandler) { } if (ImGui::BeginPopupModal("Edit Macro###MacroEdit", nullptr, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse)) { - ImGui::Text("Macro #%u (first line executes on click)", macroEditorId_); + ImGui::Text("Macro #%u (all lines execute; [cond] Spell; Default supported)", macroEditorId_); ImGui::SetNextItemWidth(320.0f); ImGui::InputTextMultiline("##MacroText", macroEditorBuf_, sizeof(macroEditorBuf_), ImVec2(320.0f, 80.0f)); @@ -10876,6 +10879,10 @@ void GameScreen::renderPartyFrames(game::GameHandler& gameHandler) { if (ImGui::Selectable(label.c_str(), gameHandler.getTargetGuid() == member.guid)) { gameHandler.setTarget(member.guid); } + // Set mouseover for [target=mouseover] macro conditionals + if (ImGui::IsItemHovered()) { + gameHandler.setMouseoverGuid(member.guid); + } // Zone tooltip on name hover if (ImGui::IsItemHovered() && member.hasPartyStats && member.zoneId != 0) { std::string zoneName = gameHandler.getWhoAreaName(member.zoneId);