From 29e8676f0cbb68ad4c8ce1e02aa5f67481daad5e Mon Sep 17 00:00:00 2001 From: YellowNest <59575587+YellowNest@users.noreply.github.com> Date: Wed, 14 Oct 2026 15:03:00 +0200 Subject: [PATCH 1/3] Track Win+X hover suppression per taskbar --- Src/StartMenu/StartMenuDLL/StartMenuDLL.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Src/StartMenu/StartMenuDLL/StartMenuDLL.h b/Src/StartMenu/StartMenuDLL/StartMenuDLL.h index 456a88475..6f77fad69 100644 --- a/Src/StartMenu/StartMenuDLL/StartMenuDLL.h +++ b/Src/StartMenu/StartMenuDLL/StartMenuDLL.h @@ -47,7 +47,7 @@ void EnableStartTooltip( bool bEnable ); struct TaskbarInfo { - TaskbarInfo( void ) { taskbarId=pointerId=0; taskBar=startButton=oldButton=rebar=taskList=chevron=news=desktop=NULL; startButtonSize.cx=startButtonSize.cy=0; oldButtonSize.cx=oldButtonSize.cy=0; bTimer=bCustomLook=bReplaceButton=bHideButton=bRecreatingButton=bThemeChanging=false; } + TaskbarInfo( void ) { taskbarId=pointerId=0; taskBar=startButton=oldButton=rebar=taskList=chevron=news=desktop=NULL; startButtonSize.cx=startButtonSize.cy=0; oldButtonSize.cx=oldButtonSize.cy=0; bTimer=bSuppressHover=bCustomLook=bReplaceButton=bHideButton=bRecreatingButton=bThemeChanging=false; } int taskbarId; HWND taskBar; HWND startButton; // either own start button or the win7 start button (depending on bReplaceButton) @@ -61,6 +61,7 @@ struct TaskbarInfo SIZE oldButtonSize; int pointerId; bool bTimer; + bool bSuppressHover; // prevent hover reopening the Start menu immediately after Win+X bool bCustomLook; bool bReplaceButton; // replace start button with own one bool bHideButton; // hide old start button (if we have own button) From d5c33a0ac7a0c9d61eaee849371b67e3571738bf Mon Sep 17 00:00:00 2001 From: YellowNest <59575587+YellowNest@users.noreply.github.com> Date: Wed, 14 Oct 2026 15:03:23 +0200 Subject: [PATCH 2/3] Prevent Win+X hover timer from being rearmed before pointer leaves Start --- Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp b/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp index 583c5b765..3ef0011ac 100644 --- a/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp +++ b/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp @@ -3966,7 +3966,7 @@ if (!g_bTrimHooks) if (msg->message==WM_MOUSEMOVE) { TaskbarInfo *taskBar=FindTaskBarInfoButton(msg->hwnd); - if (taskBar && !CMenuContainer::IsMenuOpened() && !WindowsMenuOpened()) + if (taskBar && !taskBar->bSuppressHover && !CMenuContainer::IsMenuOpened() && !WindowsMenuOpened()) { if (GetSettingInt(L"Hover") && !taskBar->bTimer) { @@ -3987,6 +3987,7 @@ if (!g_bTrimHooks) TaskbarInfo *taskBar=FindTaskBarInfoButton(msg->hwnd); if (taskBar) { + taskBar->bSuppressHover=false; taskBar->bTimer=false; KillTimer(msg->hwnd,'CLSM'); if (taskBar->oldButton==msg->hwnd) @@ -4013,7 +4014,9 @@ if (!g_bTrimHooks) TaskbarInfo *taskBar=FindTaskBarInfoBar(msg->hwnd); if (taskBar) { - if (!CMenuContainer::IsMenuOpened() && !WindowsMenuOpened() && PointAroundStartButton(taskBar->taskbarId)) + if (!PointAroundStartButton(taskBar->taskbarId)) + taskBar->bSuppressHover=false; + if (!taskBar->bSuppressHover && !CMenuContainer::IsMenuOpened() && !WindowsMenuOpened() && PointAroundStartButton(taskBar->taskbarId)) { if (!taskBar->bTimer) { @@ -4232,6 +4235,7 @@ if (!g_bTrimHooks) // Win+X is shown asynchronously on Windows 11. Cancel any pending // hover-open timer first, otherwise it can open the configured // hover menu a moment later and dismiss Win+X again. + taskBar->bSuppressHover=true; if (taskBar->bTimer) { taskBar->bTimer=false; From 4c078f5916ae9f31bce9f86698786b08067f4c21 Mon Sep 17 00:00:00 2001 From: YellowNest <59575587+YellowNest@users.noreply.github.com> Date: Wed, 14 Oct 2026 15:06:43 +0200 Subject: [PATCH 3/3] Limit hover suppression to the Windows 11 asynchronous Win+X path --- Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp b/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp index 3ef0011ac..8da7e32a0 100644 --- a/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp +++ b/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp @@ -4235,7 +4235,8 @@ if (!g_bTrimHooks) // Win+X is shown asynchronously on Windows 11. Cancel any pending // hover-open timer first, otherwise it can open the configured // hover menu a moment later and dismiss Win+X again. - taskBar->bSuppressHover=true; + if (IsWin11()) + taskBar->bSuppressHover=true; if (taskBar->bTimer) { taskBar->bTimer=false;