From b3d69a19ac7771ad10b0d19b8dd46aa70c4532cd Mon Sep 17 00:00:00 2001 From: James Tabor Date: Wed, 9 Apr 2014 20:50:03 +0000 Subject: [PATCH] [NtUser|User32] - Sync port (more) from wine to update code before move and test. See CORE-7447. svn path=/trunk/; revision=62696 --- reactos/win32ss/user/ntuser/defwnd.c | 33 +++++++++++++++----- reactos/win32ss/user/user32/windows/defwnd.c | 19 +++++------ 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/reactos/win32ss/user/ntuser/defwnd.c b/reactos/win32ss/user/ntuser/defwnd.c index e617021f37e..ea2e385792c 100644 --- a/reactos/win32ss/user/ntuser/defwnd.c +++ b/reactos/win32ss/user/ntuser/defwnd.c @@ -169,19 +169,19 @@ DefWndHandleWindowPosChanged(PWND pWnd, WINDOWPOS* Pos) IntGetClientRect(pWnd, &Rect); IntMapWindowPoints(pWnd, (style & WS_CHILD ? IntGetParent(pWnd) : NULL), (LPPOINT) &Rect, 2); - if (! (Pos->flags & SWP_NOCLIENTMOVE)) + if (!(Pos->flags & SWP_NOCLIENTMOVE)) { co_IntSendMessage(UserHMGetHandle(pWnd), WM_MOVE, 0, MAKELONG(Rect.left, Rect.top)); } - if (! (Pos->flags & SWP_NOCLIENTSIZE)) + if (!(Pos->flags & SWP_NOCLIENTSIZE) || (Pos->flags & SWP_STATECHANGED)) { - WPARAM wp = SIZE_RESTORED; - - if (style & WS_MAXIMIZE) wp = SIZE_MAXIMIZED; - else if (style & WS_MINIMIZE) wp = SIZE_MINIMIZED; - - co_IntSendMessage(UserHMGetHandle(pWnd), WM_SIZE, wp, MAKELONG(Rect.right - Rect.left, Rect.bottom - Rect.top)); + if (style & WS_MINIMIZE) co_IntSendMessage(UserHMGetHandle(pWnd), WM_SIZE, SIZE_MINIMIZED, 0 ); + else + { + WPARAM wp = (style & WS_MAXIMIZE) ? SIZE_MAXIMIZED : SIZE_RESTORED; + co_IntSendMessage(UserHMGetHandle(pWnd), WM_SIZE, wp, MAKELONG(Rect.right - Rect.left, Rect.bottom - Rect.top)); + } } return 0; } @@ -200,6 +200,15 @@ UserDrawWindowFrame(HDC hdc, NtGdiSelectBrush( hdc, hbrush ); } +VOID FASTCALL +UserDrawMovingFrame(HDC hdc, + RECTL *rect, + BOOL thickframe) +{ + if (thickframe) UserDrawWindowFrame(hdc, rect, UserGetSystemMetrics(SM_CXFRAME), UserGetSystemMetrics(SM_CYFRAME)); + else UserDrawWindowFrame(hdc, rect, 1, 1); +} + LRESULT FASTCALL DefWndHandleSysCommand(PWND pWnd, WPARAM wParam, LPARAM lParam) { @@ -216,6 +225,12 @@ DefWndHandleSysCommand(PWND pWnd, WPARAM wParam, LPARAM lParam) switch (wParam & 0xfff0) { + case SC_MOVE: + case SC_SIZE: + //DefWndDoSizeMove(pWnd, wParam); + ERR("SC_MOVESIZE\n"); + break; + case SC_SCREENSAVE: ERR("Screensaver Called!\n"); UserPostMessage(hwndSAS, WM_LOGONNOTIFY, LN_START_SCREENSAVE, 0); // always lParam 0 == not Secure @@ -302,8 +317,10 @@ IntDefWindowProc( return (LRESULT) DefWndControlColor((HDC)wParam, HIWORD(lParam)); case WM_GETHOTKEY: + //ERR("WM_GETHOTKEY\n"); return DefWndGetHotKey(Wnd); case WM_SETHOTKEY: + //ERR("WM_SETHOTKEY\n"); return DefWndSetHotKey(Wnd, wParam); case WM_NCHITTEST: diff --git a/reactos/win32ss/user/user32/windows/defwnd.c b/reactos/win32ss/user/user32/windows/defwnd.c index 40cf0b6424a..37459991a14 100644 --- a/reactos/win32ss/user/user32/windows/defwnd.c +++ b/reactos/win32ss/user/user32/windows/defwnd.c @@ -153,7 +153,7 @@ UserGetInsideRectNC(PWND Wnd, RECT *rect) } } -#if 0 // Moved to Win32k +#if 0 VOID DefWndSetRedraw(HWND hWnd, WPARAM wParam) { @@ -344,6 +344,7 @@ DefWndStartSizeMove(HWND hWnd, PWND Wnd, WPARAM wParam, POINT *capturePoint) } SetCursorPos( pt.x, pt.y ); DefWndHandleSetCursor(hWnd, (WPARAM)hWnd, MAKELONG(hittest, WM_MOUSEMOVE), Style); + //SendMessageW(hWnd, WM_SETCURSOR, (WPARAM)hWnd, MAKELONG(hittest, WM_MOUSEMOVE)); return hittest; } @@ -419,7 +420,7 @@ DefWndDoSizeMove(HWND hwnd, WORD wParam) // // Show window contents while dragging the window, get flag from registry data. // - SystemParametersInfoA(SPI_GETDRAGFULLWINDOWS, 0, &DragFullWindows, 0); + SystemParametersInfoW(SPI_GETDRAGFULLWINDOWS, 0, &DragFullWindows, 0); pt.x = GET_X_LPARAM(dwPoint); pt.y = GET_Y_LPARAM(dwPoint); @@ -450,11 +451,11 @@ DefWndDoSizeMove(HWND hwnd, WORD wParam) SetCapture(hwnd); hittest = DefWndStartSizeMove(hwnd, Wnd, wParam, &capturePoint); if (!hittest) - { + { ReleaseCapture(); return; - } - } + } + } } /* Get min/max info */ @@ -515,7 +516,7 @@ DefWndDoSizeMove(HWND hwnd, WORD wParam) } IntNotifyWinEvent( EVENT_SYSTEM_MOVESIZESTART, hwnd, OBJID_WINDOW, CHILDID_SELF, 0); - SendMessageA( hwnd, WM_ENTERSIZEMOVE, 0, 0 ); + SendMessageW( hwnd, WM_ENTERSIZEMOVE, 0, 0 ); NtUserxSetGUIThreadHandle(MSQ_STATE_MOVESIZE, hwnd); if (GetCapture() != hwnd) SetCapture( hwnd ); @@ -703,8 +704,8 @@ DefWndDoSizeMove(HWND hwnd, WORD wParam) } NtUserxSetGUIThreadHandle(MSQ_STATE_MOVESIZE, NULL); - SendMessageA( hwnd, WM_EXITSIZEMOVE, 0, 0 ); - SendMessageA( hwnd, WM_SETVISIBLE, !IsIconic(hwnd), 0L); + SendMessageW( hwnd, WM_EXITSIZEMOVE, 0, 0 ); + SendMessageW( hwnd, WM_SETVISIBLE, !IsIconic(hwnd), 0L); /* window moved or resized */ if (moved) @@ -744,7 +745,7 @@ DefWndDoSizeMove(HWND hwnd, WORD wParam) if( !moved ) { if( Style & WS_SYSMENU ) - SendMessageA( hwnd, WM_SYSCOMMAND, SC_MOUSEMENU + HTSYSMENU, MAKELONG(pt.x,pt.y)); + SendMessageW( hwnd, WM_SYSCOMMAND, SC_MOUSEMENU + HTSYSMENU, MAKELONG(pt.x,pt.y)); } } }