https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2d53e953cd19ea11b6ab8221e959b2f143be7fb3

commit 2d53e953cd19ea11b6ab8221e959b2f143be7fb3
Author:     Egor Ananyin <[email protected]>
AuthorDate: Tue Aug 15 22:37:27 2023 +0300
Commit:     GitHub <[email protected]>
CommitDate: Tue Aug 15 21:37:27 2023 +0200

    [TASKMGR] Do not disable status bar when opening system menu (#5571)
    
    We do not need to clean the status bar when opening the system menu as it 
does not show any hints.
    
    CORE-19061
---
 base/applications/taskmgr/taskmgr.c | 22 ++++++++++++++--------
 base/applications/taskmgr/taskmgr.h |  4 ++--
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/base/applications/taskmgr/taskmgr.c 
b/base/applications/taskmgr/taskmgr.c
index 44bc24b2f96..6cbf8c7994e 100644
--- a/base/applications/taskmgr/taskmgr.c
+++ b/base/applications/taskmgr/taskmgr.c
@@ -482,14 +482,23 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM 
wParam, LPARAM lParam)
         TrayIcon_UpdateIcon();
         break;
 
+    case WM_INITMENUPOPUP:
+        /* Do not disable the status bar if we opened the system menu */
+        if (!HIWORD(lParam))
+            TaskManager_DisableStatusBar(hDlg);
+        else
+            TaskManager_EnableStatusBar(hDlg);
+        break;
     case WM_ENTERMENULOOP:
-        TaskManager_OnEnterMenuLoop(hDlg);
+        bInMenuLoop = TRUE;
         break;
     case WM_EXITMENULOOP:
-        TaskManager_OnExitMenuLoop(hDlg);
+        bInMenuLoop = FALSE;
+        TaskManager_EnableStatusBar(hDlg);
         break;
     case WM_MENUSELECT:
-        TaskManager_OnMenuSelect(hDlg, LOWORD(wParam), HIWORD(wParam), 
(HMENU)lParam);
+        if (!(HIWORD(wParam) & MF_SYSMENU))
+            TaskManager_OnMenuSelect(hDlg, LOWORD(wParam), HIWORD(wParam), 
(HMENU)lParam);
         break;
     case WM_SYSCOLORCHANGE:
         /* Forward WM_SYSCOLORCHANGE to common controls */
@@ -887,24 +896,21 @@ void TaskManager_OnRestoreMainWindow(void)
     SetWindowPos(hMainWnd, (OnTop ? HWND_TOPMOST : HWND_TOP), 0, 0, 0, 0, 
SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
 }
 
-void TaskManager_OnEnterMenuLoop(HWND hWnd)
+void TaskManager_DisableStatusBar(HWND hWnd)
 {
     int nParts;
 
     /* Update the status bar pane sizes */
     nParts = -1;
     SendMessageW(hStatusWnd, SB_SETPARTS, 1, (LPARAM) (LPINT)&nParts);
-    bInMenuLoop = TRUE;
     SendMessageW(hStatusWnd, SB_SETTEXT, (WPARAM)0, (LPARAM)L"");
 }
 
-void TaskManager_OnExitMenuLoop(HWND hWnd)
+void TaskManager_EnableStatusBar(HWND hWnd)
 {
     RECT   rc;
     int    nParts[3];
 
-    bInMenuLoop = FALSE;
-
     /* Update the status bar pane sizes */
     GetClientRect(hWnd, &rc);
     nParts[0] = STATUS_SIZE1;
diff --git a/base/applications/taskmgr/taskmgr.h 
b/base/applications/taskmgr/taskmgr.h
index 28136f8271c..a3b6220e8b9 100644
--- a/base/applications/taskmgr/taskmgr.h
+++ b/base/applications/taskmgr/taskmgr.h
@@ -94,8 +94,8 @@ void FillSolidRect(HDC hDC, LPCRECT lpRect, COLORREF clr);
 void LoadSettings(void);
 void SaveSettings(void);
 void TaskManager_OnRestoreMainWindow(void);
-void TaskManager_OnEnterMenuLoop(HWND hWnd);
-void TaskManager_OnExitMenuLoop(HWND hWnd);
+void TaskManager_DisableStatusBar(HWND hWnd);
+void TaskManager_EnableStatusBar(HWND hWnd);
 void TaskManager_OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU 
hSysMenu);
 void TaskManager_OnViewUpdateSpeed(DWORD);
 void TaskManager_OnTabWndSelChange(void);

Reply via email to