From 1ea0ebc8944a3f0327732806e950b90bc484314e Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 19 Aug 2012 23:07:29 +0000 Subject: [PATCH] [User32] - Attempt to fix Win test_mouse_input, properly set MA_ACTIVATE with right conditions when sending WM_LBUTTONDOWN. - Get code close to wine. svn path=/trunk/; revision=57109 --- reactos/win32ss/user/user32/windows/defwnd.c | 44 +++---------------- .../win32ss/user/user32/windows/nonclient.c | 5 ++- 2 files changed, 11 insertions(+), 38 deletions(-) diff --git a/reactos/win32ss/user/user32/windows/defwnd.c b/reactos/win32ss/user/user32/windows/defwnd.c index 32a52d26369..e3a8b26585a 100644 --- a/reactos/win32ss/user/user32/windows/defwnd.c +++ b/reactos/win32ss/user/user32/windows/defwnd.c @@ -1274,62 +1274,32 @@ User32DefWindowProc(HWND hWnd, } */ case WM_CLOSE: - { DestroyWindow(hWnd); return (0); - } case WM_MOUSEACTIVATE: - { if (GetWindowLongPtrW(hWnd, GWL_STYLE) & WS_CHILD) { - LONG Ret; - if (bUnicode) - { - Ret = SendMessageW(GetParent(hWnd), WM_MOUSEACTIVATE, - wParam, lParam); - } - else - { - Ret = SendMessageA(GetParent(hWnd), WM_MOUSEACTIVATE, - wParam, lParam); - } - if (Ret) - { - return (Ret); - } + LONG Ret = SendMessageW(GetParent(hWnd), WM_MOUSEACTIVATE, wParam, lParam); + if (Ret) return (Ret); } - return ((LOWORD(lParam) >= HTCLIENT) ? MA_ACTIVATE : MA_NOACTIVATE); - } + return ( (HIWORD(lParam) == WM_LBUTTONDOWN && LOWORD(lParam) == HTCAPTION) ? MA_NOACTIVATE : MA_ACTIVATE ); case WM_ACTIVATE: - { - /* Check if the window is minimized. */ + /* The default action in Windows is to set the keyboard focus to + * the window, if it's being activated and not minimized */ if (LOWORD(wParam) != WA_INACTIVE && !(GetWindowLongPtrW(hWnd, GWL_STYLE) & WS_MINIMIZE)) { + //ERR("WM_ACTIVATE %p\n",hWnd); SetFocus(hWnd); } break; - } case WM_MOUSEWHEEL: - { if (GetWindowLongPtrW(hWnd, GWL_STYLE) & WS_CHILD) - { - if (bUnicode) - { - return (SendMessageW(GetParent(hWnd), WM_MOUSEWHEEL, - wParam, lParam)); - } - else - { - return (SendMessageA(GetParent(hWnd), WM_MOUSEWHEEL, - wParam, lParam)); - } - } + return SendMessageW( GetParent(hWnd), WM_MOUSEWHEEL, wParam, lParam); break; - } case WM_ERASEBKGND: case WM_ICONERASEBKGND: diff --git a/reactos/win32ss/user/user32/windows/nonclient.c b/reactos/win32ss/user/user32/windows/nonclient.c index 2e61eb8da87..2e0923f6ff0 100644 --- a/reactos/win32ss/user/user32/windows/nonclient.c +++ b/reactos/win32ss/user/user32/windows/nonclient.c @@ -995,7 +995,8 @@ DefWndNCLButtonDown(HWND hWnd, WPARAM wParam, LPARAM lParam) } case HTSYSMENU: { - if (GetWindowLongPtrW(hWnd, GWL_STYLE) & WS_SYSMENU) + LONG style = GetWindowLongPtrW( hWnd, GWL_STYLE ); + if (style & WS_SYSMENU) { SendMessageW(hWnd, WM_SYSCOMMAND, SC_MOUSEMENU + HTSYSMENU, lParam); @@ -1036,6 +1037,8 @@ DefWndNCLButtonDown(HWND hWnd, WPARAM wParam, LPARAM lParam) SendMessageW(hWnd, WM_SYSCOMMAND, SC_SIZE + wParam - (HTLEFT - WMSZ_LEFT), lParam); break; } + case HTBORDER: + break; } return(0); }