From 48809cb86c0990b35f190404aa85d0483d306fa4 Mon Sep 17 00:00:00 2001 From: RGBACatlord <37526906+RGBACatlord@users.noreply.github.com> Date: Tue, 18 Mar 2025 12:12:50 +1300 Subject: [PATCH] Fix crash on VGUI menu bar button cursor entrance --- src/public/vgui_controls/MenuBar.h | 6 +++++- src/vgui2/vgui_controls/MenuBar.cpp | 8 +++++++- src/vgui2/vgui_controls/MenuButton.cpp | 4 ++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/public/vgui_controls/MenuBar.h b/src/public/vgui_controls/MenuBar.h index 01ccc06a8..8a6987485 100644 --- a/src/public/vgui_controls/MenuBar.h +++ b/src/public/vgui_controls/MenuBar.h @@ -41,7 +41,11 @@ protected: virtual void PerformLayout(); virtual void Paint(); MESSAGE_FUNC( OnMenuClose, "MenuClose" ); - MESSAGE_FUNC_INT( OnCursorEnteredMenuButton, "CursorEnteredMenuButton", VPanel); +#ifdef PLATFORM_64BITS + MESSAGE_FUNC_PTR( OnCursorEnteredMenuButton, "CursorEnteredMenuButton", VPanel ); +#else + MESSAGE_FUNC_INT( OnCursorEnteredMenuButton, "CursorEnteredMenuButton", VPanel ); +#endif private: CUtlVector m_pMenuButtons; diff --git a/src/vgui2/vgui_controls/MenuBar.cpp b/src/vgui2/vgui_controls/MenuBar.cpp index 1c7052cc4..bd207443b 100644 --- a/src/vgui2/vgui_controls/MenuBar.cpp +++ b/src/vgui2/vgui_controls/MenuBar.cpp @@ -221,9 +221,15 @@ void MenuBar::OnMenuClose() //----------------------------------------------------------------------------- // Purpose: Message map //----------------------------------------------------------------------------- -void MenuBar::OnCursorEnteredMenuButton(int VPanel) +#ifdef PLATFORM_64BITS +void MenuBar::OnCursorEnteredMenuButton(vgui::Panel* VPanel) { VPANEL menuButton = (VPANEL)VPanel; +#else +void Menu::OnCursorEnteredMenuItem(int VPanel) +{ + VPANEL menuButton = (VPANEL)VPanel; +#endif // see if we had a menu open for ( int i = 0; i < m_pMenuButtons.Count(); i++) { diff --git a/src/vgui2/vgui_controls/MenuButton.cpp b/src/vgui2/vgui_controls/MenuButton.cpp index 19b35ae67..2bf4aadef 100644 --- a/src/vgui2/vgui_controls/MenuButton.cpp +++ b/src/vgui2/vgui_controls/MenuButton.cpp @@ -238,7 +238,11 @@ void MenuButton::OnCursorEntered() // forward the message on to the parent of this menu. KeyValues *msg = new KeyValues ("CursorEnteredMenuButton"); // tell the parent this menuitem is the one that was entered so it can open the menu if it wants +#ifdef PLATFORM_64BITS + msg->SetPtr("VPanel", (void*)GetVPanel()); +#else msg->SetInt("VPanel", GetVPanel()); +#endif ivgui()->PostMessage(GetVParent(), msg, NULL); }