From 7f60d97626092161ae3a7c98b91fe45adb1362ae Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Thu, 26 Feb 2026 19:12:42 +0100 Subject: [PATCH 1/6] Fixed initialization logic. --- .../GUI/GUICallbacks/Menus/MainMenu.cpp | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp index 600dabd2c69..64c0ab15e99 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp @@ -942,17 +942,22 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, // -------------------------------------------------------------------------------------------- case GWM_MOUSE_POS: { - ICoord2D mouse; - mouse.x = mData1 & 0xFFFF; - mouse.y = mData1 >> 16; + // TheSuperHackers @tweak 26/02/2026 Show mouse and menu immediately when shellmap is disabled. + Bool doInitialize = !TheGlobalData->m_shellMapOn; - // TheSuperHackers @tweak 20/08/2025 Show mouse and menu immediately when shellmap is disabled. - if (TheGlobalData->m_shellMapOn && mouse.x == 0 && mouse.y == 0) - break; + if (!doInitialize) + { + ICoord2D mouse; + mouse.x = mData1 & 0xFFFF; + mouse.y = mData1 >> 16; + + static Int mousePosX = mouse.x; + static Int mousePosY = mouse.y; + + doInitialize = abs(mouse.x - mousePosX) > 20 || abs(mouse.y - mousePosY) > 20; + } - static Int mousePosX = mouse.x; - static Int mousePosY = mouse.y; - if(abs(mouse.x - mousePosX) > 20 || abs(mouse.y - mousePosY) > 20) + if (doInitialize) { DEBUG_LOG(("Mouse X:%d, Y:%d", mouse.x, mouse.y)); From 0e6854086195bbf627f3fe442befe755273ac89c Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Thu, 26 Feb 2026 19:14:56 +0100 Subject: [PATCH 2/6] Removed unnecessary 'notShown' checks. --- .../GUI/GUICallbacks/Menus/MainMenu.cpp | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp index 64c0ab15e99..ae3c9061e70 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp @@ -961,24 +961,6 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, { DEBUG_LOG(("Mouse X:%d, Y:%d", mouse.x, mouse.y)); - if(notShown) - { - initialGadgetDelay = 1; - dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); - TheTransitionHandler->setGroup("MainMenuFade", TRUE); - TheTransitionHandler->setGroup("MainMenuDefaultMenu"); - TheMouse->setVisibility(TRUE); - notShown = FALSE; - return MSG_HANDLED; - } - } - - } - break; - case GWM_CHAR: - { - if(notShown) - { initialGadgetDelay = 1; dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); TheTransitionHandler->setGroup("MainMenuFade", TRUE); @@ -989,6 +971,18 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, } } + break; + case GWM_CHAR: + { + initialGadgetDelay = 1; + dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); + TheTransitionHandler->setGroup("MainMenuFade", TRUE); + TheTransitionHandler->setGroup("MainMenuDefaultMenu"); + TheMouse->setVisibility(TRUE); + notShown = FALSE; + return MSG_HANDLED; + + } } From 2a78731912e6c03a1c7ccb71437724b084119d0e Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Thu, 26 Feb 2026 19:17:24 +0100 Subject: [PATCH 3/6] Changed break statement, blank lines and case separation. --- .../GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp index ae3c9061e70..51d19f2bd53 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp @@ -932,13 +932,11 @@ void MainMenuUpdate( WindowLayout *layout, void *userData ) WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, WindowMsgData mData1, WindowMsgData mData2 ) { - if(!notShown) return MSG_IGNORED; switch( msg ) { - // -------------------------------------------------------------------------------------------- case GWM_MOUSE_POS: { @@ -959,7 +957,6 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, if (doInitialize) { - DEBUG_LOG(("Mouse X:%d, Y:%d", mouse.x, mouse.y)); initialGadgetDelay = 1; dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); @@ -970,8 +967,10 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, return MSG_HANDLED; } + break; } - break; + + // -------------------------------------------------------------------------------------------- case GWM_CHAR: { initialGadgetDelay = 1; @@ -981,15 +980,12 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, TheMouse->setVisibility(TRUE); notShown = FALSE; return MSG_HANDLED; - } - } - return MSG_IGNORED; - } + void PrintOffsetsFromControlBarParent( void ); //------------------------------------------------------------------------------------------------- /** Main menu window system callback */ From b99654ddc356d3ece7ef5933c18aea4c329831b1 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Thu, 26 Feb 2026 19:33:06 +0100 Subject: [PATCH 4/6] Removed debug log call. --- .../Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp index ccde0599563..2a3cf15b1f6 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp @@ -957,7 +957,6 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, if (doInitialize) { - DEBUG_LOG(("Mouse X:%d, Y:%d", mouse.x, mouse.y)); initialGadgetDelay = 1; dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); TheTransitionHandler->setGroup("MainMenuFade", TRUE); From b99218eb1da3c24f01bce0894d0310200571cea1 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:47:37 +0100 Subject: [PATCH 5/6] Changed variable name. --- .../Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp index 2a3cf15b1f6..9e4cdbbe79f 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp @@ -941,9 +941,9 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, case GWM_MOUSE_POS: { // TheSuperHackers @tweak 26/02/2026 Show mouse and menu immediately when shellmap is disabled. - Bool doInitialize = !TheGlobalData->m_shellMapOn; + Bool doShow = !TheGlobalData->m_shellMapOn; - if (!doInitialize) + if (!doShow) { ICoord2D mouse; mouse.x = mData1 & 0xFFFF; @@ -952,10 +952,10 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, static Int mousePosX = mouse.x; static Int mousePosY = mouse.y; - doInitialize = abs(mouse.x - mousePosX) > 20 || abs(mouse.y - mousePosY) > 20; + doShow = abs(mouse.x - mousePosX) > 20 || abs(mouse.y - mousePosY) > 20; } - if (doInitialize) + if (doShow) { initialGadgetDelay = 1; dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); From e81b768cde44ad536310bd7a75ed9bac35aa20fa Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Fri, 27 Feb 2026 21:39:09 +0100 Subject: [PATCH 6/6] Replicated in Generals. --- .../GUI/GUICallbacks/Menus/MainMenu.cpp | 54 +++++++++---------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp index b96a6ff783d..0097330bb16 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/MainMenu.cpp @@ -895,47 +895,30 @@ void MainMenuUpdate( WindowLayout *layout, void *userData ) WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, WindowMsgData mData1, WindowMsgData mData2 ) { - if(!notShown) return MSG_IGNORED; switch( msg ) { - // -------------------------------------------------------------------------------------------- case GWM_MOUSE_POS: { - ICoord2D mouse; - mouse.x = mData1 & 0xFFFF; - mouse.y = mData1 >> 16; + // TheSuperHackers @tweak 26/02/2026 Show mouse and menu immediately when shellmap is disabled. + Bool doShow = !TheGlobalData->m_shellMapOn; - // TheSuperHackers @tweak 20/08/2025 Show mouse and menu immediately when shellmap is disabled. - if (TheGlobalData->m_shellMapOn && mouse.x == 0 && mouse.y == 0) - break; - - static Int mousePosX = mouse.x; - static Int mousePosY = mouse.y; - if(abs(mouse.x - mousePosX) > 20 || abs(mouse.y - mousePosY) > 20) + if (!doShow) { + ICoord2D mouse; + mouse.x = mData1 & 0xFFFF; + mouse.y = mData1 >> 16; - DEBUG_LOG(("Mouse X:%d, Y:%d", mouse.x, mouse.y)); - if(notShown) - { - initialGadgetDelay = 1; - dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); - TheTransitionHandler->setGroup("MainMenuFade", TRUE); - TheTransitionHandler->setGroup("MainMenuDefaultMenu"); - TheMouse->setVisibility(TRUE); - notShown = FALSE; - return MSG_HANDLED; - } + static Int mousePosX = mouse.x; + static Int mousePosY = mouse.y; + + doShow = abs(mouse.x - mousePosX) > 20 || abs(mouse.y - mousePosY) > 20; } - } - break; - case GWM_CHAR: - { - if(notShown) + if (doShow) { initialGadgetDelay = 1; dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); @@ -946,14 +929,25 @@ WindowMsgHandledType MainMenuInput( GameWindow *window, UnsignedInt msg, return MSG_HANDLED; } + break; } + // -------------------------------------------------------------------------------------------- + case GWM_CHAR: + { + initialGadgetDelay = 1; + dropDownWindows[DROPDOWN_MAIN]->winHide(FALSE); + TheTransitionHandler->setGroup("MainMenuFade", TRUE); + TheTransitionHandler->setGroup("MainMenuDefaultMenu"); + TheMouse->setVisibility(TRUE); + notShown = FALSE; + return MSG_HANDLED; + } } - return MSG_IGNORED; - } + void PrintOffsetsFromControlBarParent(); //------------------------------------------------------------------------------------------------- /** Main menu window system callback */