From bef0bfa2626d7c836dcc95cad313955001577161 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Thu, 22 Jul 2021 17:24:36 -0600 Subject: [PATCH] Revert part of a89577e that allowed message handlers to override the default window proc, killing key commands like Alt+F4 --- Sources/Plasma/Apps/plClient/winmain.cpp | 83 ++++++++++++------------ 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/Sources/Plasma/Apps/plClient/winmain.cpp b/Sources/Plasma/Apps/plClient/winmain.cpp index 97a88df0..6cf77992 100644 --- a/Sources/Plasma/Apps/plClient/winmain.cpp +++ b/Sources/Plasma/Apps/plClient/winmain.cpp @@ -479,10 +479,22 @@ void DebugMsgF(const char* format, ...); // Handles all the windows messages we might receive LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ +{ static bool gDragging = false; static UInt8 mouse_down = 0; + // Messages we registered for manually (no const value) + if (message == s_WmTaskbarList) + { + // Grab the Windows 7 taskbar list stuff + if (gTaskbarList) + gTaskbarList->Release(); + HRESULT result = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_ALL, IID_ITaskbarList3, (void**)&gTaskbarList); + if (FAILED(result)) + gTaskbarList = nil; + return 0; + } + // Handle messages switch (message) { case WM_LBUTTONDOWN: @@ -505,7 +517,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) if (gClient->WindowActive() && gClient->GetInputManager()) gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd); } - return TRUE; + break; case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_MBUTTONUP: @@ -517,19 +529,19 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_KEYUP: if (gClient && gClient->WindowActive() && gClient->GetInputManager()) gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd); - return TRUE; + break; case WM_MOUSEMOVE: { if (gClient && gClient->GetInputManager()) gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd); } - return TRUE; + break; #if 0 case WM_KILLFOCUS: SetForegroundWindow(hWnd); - return TRUE; + break; #endif case WM_SYSKEYUP: @@ -541,25 +553,25 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) } //DefWindowProc(hWnd, message, wParam, lParam); } - return TRUE; + break; case WM_SYSCOMMAND: - switch (wParam) { - // Trap ALT so it doesn't pause the app - case SC_KEYMENU : - //// disable screensavers and monitor power downs too. - case SC_SCREENSAVE: - case SC_MONITORPOWER: - return 0; + switch (wParam) { + // Trap ALT so it doesn't pause the app + case SC_KEYMENU : + //// disable screensavers and monitor power downs too. + case SC_SCREENSAVE: + case SC_MONITORPOWER: + return 0; case SC_CLOSE : // kill game if window is closed gClient->SetDone(TRUE); if (plNetClientMgr * mgr = plNetClientMgr::GetInstance()) mgr->QueueDisableNet(false, nil); DestroyWindow(gClient->GetWindowHandle()); - return TRUE; - } - return TRUE; + break; + } + break; case WM_SETCURSOR: { @@ -583,9 +595,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) } } } - return TRUE; + break; - case WM_ACTIVATE: + case WM_ACTIVATE: { bool active = (LOWORD(wParam) == WA_ACTIVE || LOWORD(wParam) == WA_CLICKACTIVE); bool minimized = (HIWORD(wParam) != 0); @@ -603,7 +615,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) gPendingActivateFlag = active; } } - return TRUE; + break; // Let go of the mouse if the window is being moved. case WM_ENTERSIZEMOVE: @@ -611,7 +623,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) gDragging = true; if( gClient ) gClient->WindowActivate(false); - return TRUE; + break; // Redo the mouse capture if the window gets moved case WM_EXITSIZEMOVE: @@ -619,7 +631,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) gDragging = false; if( gClient ) gClient->WindowActivate(true); - return TRUE; + break; // Redo the mouse capture if the window gets moved (special case for Colin // and his cool program that bumps windows out from under the taskbar) @@ -631,7 +643,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) } else DebugMsgF("Got WM_MOVE, but ignoring"); - return TRUE; + break; /// Resize the window // (we do WM_SIZING here instead of WM_SIZE because, for some reason, WM_SIZE is @@ -646,7 +658,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) ::GetClientRect(hWnd, &r); gClient->GetPipeline()->Resize(r.right - r.left, r.bottom - r.top); } - return TRUE; + break; case WM_SIZE: // Let go of the mouse if the window is being minimized @@ -663,38 +675,23 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) if (gClient) gClient->WindowActivate(true); } - return TRUE; + break; case WM_CLOSE: gClient->SetDone(TRUE); if (plNetClientMgr * mgr = plNetClientMgr::GetInstance()) mgr->QueueDisableNet(false, nil); DestroyWindow(gClient->GetWindowHandle()); - return TRUE; + break; case WM_DESTROY: gClient->SetDone(TRUE); if (plNetClientMgr * mgr = plNetClientMgr::GetInstance()) mgr->QueueDisableNet(false, nil); - PostQuitMessage(0); - return TRUE; - case WM_CREATE: - // Create renderer - return TRUE; + PostQuitMessage(0); + break; } - // Messages we registered for manually (no const value) - if (message == s_WmTaskbarList) - { - // Grab the Windows 7 taskbar list stuff - if (gTaskbarList) - gTaskbarList->Release(); - HRESULT result = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_ALL, IID_ITaskbarList3, (void**)&gTaskbarList); - if (FAILED(result)) - gTaskbarList = nil; - return TRUE; - } - else - return DefWindowProc(hWnd, message, wParam, lParam); + return DefWindowProc(hWnd, message, wParam, lParam); } void PumpMessageQueueProc( void )