From b25de8bf1c6c2b44fae968811bb62a8bc9cf1563 Mon Sep 17 00:00:00 2001 From: Jim Mathies Date: Thu, 7 Oct 2010 16:51:05 -0500 Subject: [PATCH] Bug 602450 - Don't bring the system menu up in the tab bar. r=neil, a=final --- widget/src/windows/nsWindow.cpp | 53 +++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/widget/src/windows/nsWindow.cpp b/widget/src/windows/nsWindow.cpp index 16f62a9944..b9ba8911ef 100644 --- a/widget/src/windows/nsWindow.cpp +++ b/widget/src/windows/nsWindow.cpp @@ -4905,21 +4905,40 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM &wParam, LPARAM &lParam, contextMenukey ? nsMouseEvent::eLeftButton : nsMouseEvent::eRightButton, MOUSE_INPUT_SOURCE()); + if (lParam != -1 && !result && mCustomNonClient && + DispatchMouseEvent(NS_MOUSE_MOZHITTEST, wParam, pos, + PR_FALSE, nsMouseEvent::eLeftButton, + MOUSE_INPUT_SOURCE())) { + // Blank area hit, throw up the system menu. + HMENU hMenu = GetSystemMenu(mWnd, FALSE); + if (hMenu) { + LPARAM cmd = + TrackPopupMenu(hMenu, + (TPM_LEFTBUTTON|TPM_RIGHTBUTTON| + TPM_RETURNCMD|TPM_TOPALIGN| + (mIsRTL ? TPM_RIGHTALIGN : TPM_LEFTALIGN)), + GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), + 0, mWnd, NULL); + if (cmd) { + PostMessage(mWnd, WM_SYSCOMMAND, cmd, 0); + } + result = PR_TRUE; + } + } } break; case WM_LBUTTONDBLCLK: result = DispatchMouseEvent(NS_MOUSE_DOUBLECLICK, wParam, lParam, PR_FALSE, nsMouseEvent::eLeftButton, MOUSE_INPUT_SOURCE()); + DispatchPendingEvents(); break; case WM_MBUTTONDOWN: - { result = DispatchMouseEvent(NS_MOUSE_BUTTON_DOWN, wParam, lParam, PR_FALSE, nsMouseEvent::eMiddleButton, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); - } - break; + break; case WM_MBUTTONUP: result = DispatchMouseEvent(NS_MOUSE_BUTTON_UP, wParam, lParam, PR_FALSE, @@ -4930,6 +4949,7 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM &wParam, LPARAM &lParam, case WM_MBUTTONDBLCLK: result = DispatchMouseEvent(NS_MOUSE_DOUBLECLICK, wParam, lParam, PR_FALSE, nsMouseEvent::eMiddleButton, MOUSE_INPUT_SOURCE()); + DispatchPendingEvents(); break; case WM_NCMBUTTONDOWN: @@ -4951,34 +4971,12 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM &wParam, LPARAM &lParam, break; case WM_RBUTTONDOWN: - { result = DispatchMouseEvent(NS_MOUSE_BUTTON_DOWN, wParam, lParam, PR_FALSE, nsMouseEvent::eRightButton, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); - } - break; + break; case WM_RBUTTONUP: - if (mCustomNonClient && - DispatchMouseEvent(NS_MOUSE_MOZHITTEST, wParam, lParam, - PR_FALSE, nsMouseEvent::eLeftButton, - MOUSE_INPUT_SOURCE())) { - // Blank area hit, throw up the system menu. - HMENU hMenu = GetSystemMenu(mWnd, FALSE); - if (hMenu) { - LPARAM param = lParamToScreen(lParam); - LPARAM cmd = TrackPopupMenu(hMenu, - (TPM_LEFTBUTTON|TPM_RETURNCMD|TPM_TOPALIGN| - (mIsRTL ? TPM_RIGHTALIGN : TPM_LEFTALIGN)), - GET_X_LPARAM(param), GET_Y_LPARAM(param), - 0, mWnd, NULL); - if (cmd) { - PostMessage(mWnd, WM_SYSCOMMAND, cmd, 0); - } - result = PR_TRUE; - break; - } - } result = DispatchMouseEvent(NS_MOUSE_BUTTON_UP, wParam, lParam, PR_FALSE, nsMouseEvent::eRightButton, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); @@ -4987,6 +4985,7 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM &wParam, LPARAM &lParam, case WM_RBUTTONDBLCLK: result = DispatchMouseEvent(NS_MOUSE_DOUBLECLICK, wParam, lParam, PR_FALSE, nsMouseEvent::eRightButton, MOUSE_INPUT_SOURCE()); + DispatchPendingEvents(); break; case WM_NCRBUTTONDOWN: @@ -5007,6 +5006,8 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM &wParam, LPARAM &lParam, result = DispatchMouseEvent(NS_MOUSE_DOUBLECLICK, 0, lParamToClient(lParam), PR_FALSE, nsMouseEvent::eRightButton, MOUSE_INPUT_SOURCE()); + DispatchPendingEvents(); + break; case WM_APPCOMMAND: { -- 2.11.4.GIT