From 5fbeb7938c113c630835dd3dd98795a4c7d3f440 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Tue, 10 Mar 2026 21:27:26 -0700 Subject: [PATCH] feat: right-click context menu for party member frames Right-clicking a party member name in the 5-man party frame opens a context menu with: Target, Set Focus, Whisper, Trade, Inspect. - Whisper switches chat type to WHISPER and pre-fills the target name - Trade calls GameHandler::initiateTrade(guid) - Inspect sets target then calls GameHandler::inspectTarget() - Uses BeginPopupContextItem tied to the Selectable widget --- src/ui/game_screen.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index ca885795..dc7f21f7 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -5648,6 +5648,32 @@ void GameScreen::renderPartyFrames(game::GameHandler& gameHandler) { ImGui::PopStyleColor(); } + // Right-click context menu for party member actions + if (ImGui::BeginPopupContextItem("PartyMemberCtx")) { + ImGui::TextDisabled("%s", member.name.c_str()); + ImGui::Separator(); + if (ImGui::MenuItem("Target")) { + gameHandler.setTarget(member.guid); + } + if (ImGui::MenuItem("Set Focus")) { + gameHandler.setFocus(member.guid); + } + if (ImGui::MenuItem("Whisper")) { + selectedChatType = 4; // WHISPER + strncpy(whisperTargetBuffer, member.name.c_str(), sizeof(whisperTargetBuffer) - 1); + whisperTargetBuffer[sizeof(whisperTargetBuffer) - 1] = '\0'; + refocusChatInput = true; + } + if (ImGui::MenuItem("Trade")) { + gameHandler.initiateTrade(member.guid); + } + if (ImGui::MenuItem("Inspect")) { + gameHandler.setTarget(member.guid); + gameHandler.inspectTarget(); + } + ImGui::EndPopup(); + } + ImGui::Separator(); ImGui::PopID(); }