From f14d528cb78acfbafdf3a8e82e43c1ba2ebf8518 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Fri, 30 Oct 2026 19:46:34 +0000 Subject: [PATCH] Decompile fn_07713 (UIMessengerGroupWnd::Slot25) Batch #6094 by alisonrag: 0 byte-identical, 1 confirmed by peer review. - fn_07713 UIMessengerGroupWnd::Slot25: logic confirmed by peer review Peer-reviewed-by: ragnarok-clanker, Lumen, superintelligence, kyoshi, Snow Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Contents/Messenger/MessengerMember.cpp | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/Source/Contents/Messenger/MessengerMember.cpp b/Source/Contents/Messenger/MessengerMember.cpp index 2e11be43..a44a6059 100644 --- a/Source/Contents/Messenger/MessengerMember.cpp +++ b/Source/Contents/Messenger/MessengerMember.cpp @@ -114,6 +114,7 @@ public: class UIMessengerGroupWnd : public UIFrameWnd { public: void Slot11() override; + void Slot25(int x, int y) override; void Slot26(int x, int y) override; void Slot27(int x, int y) override; void Slot31(int x, int y) override; @@ -659,6 +660,36 @@ void UIMessengerGroupWnd::Slot26(int, int) { } } +// OFFSET: 0x0073D460 +// FUNCTION: fn_07713 +void UIMessengerGroupWnd::Slot25(int x, int y) { + if (g_messengerGroupCollapsed) { + return; + } + + const int previous = this->selected; + this->selected = -1; + + if (x >= 2 && x <= this->geometry.width - 2 && y > 16 && y < this->visibleRows * this->rowHeight + 17) { + const int index = (y - 17) / this->rowHeight + this->scrollTop; + int position = 0; + for (auto member = this->members.begin(); member != this->members.end(); ++member, ++position) { + if (position == index) { + this->selected = index; + break; + } + } + } + + if (previous != this->selected) { + this->Invalidate(); + } + + if (this->selected != -1) { + this->SendMsg(nullptr, 49, 0, 0, 0, 0); + } +} + // OFFSET: 0x0073D080 // FUNCTION: fn_07710 void UIMessengerGroupWnd::Slot31(int x, int y) { @@ -885,4 +916,4 @@ void UIWindowMgr::RetireTransientWindow() { this->Schedule(transient); this->window_4F250 = nullptr; } -} \ No newline at end of file +}