Jacek Caban : win32u: Move default WM_WINDOWPOSCHANGING implementation from user32.

Alexandre Julliard julliard at winehq.org
Thu May 12 15:55:51 CDT 2022


Module: wine
Branch: master
Commit: b9a40c4b26407659d89c67388fe14fed60dc3e17
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b9a40c4b26407659d89c67388fe14fed60dc3e17

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed May 11 21:26:52 2022 +0200

win32u: Move default WM_WINDOWPOSCHANGING implementation from user32.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/defwnd.c         |  3 ---
 dlls/user32/win.h            |  1 -
 dlls/user32/winpos.c         | 25 -------------------------
 dlls/win32u/defwnd.c         | 22 ++++++++++++++++++++++
 dlls/win32u/win32u_private.h |  1 +
 dlls/win32u/window.c         |  2 +-
 6 files changed, 24 insertions(+), 30 deletions(-)

diff --git a/dlls/user32/defwnd.c b/dlls/user32/defwnd.c
index 74dfa609bbd..c4263edac93 100644
--- a/dlls/user32/defwnd.c
+++ b/dlls/user32/defwnd.c
@@ -180,9 +180,6 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
         NC_HandleNCCalcSize( hwnd, wParam, (RECT *)lParam );
         break;
 
-    case WM_WINDOWPOSCHANGING:
-        return WINPOS_HandleWindowPosChanging( hwnd, (WINDOWPOS *)lParam );
-
     case WM_WINDOWPOSCHANGED:
         DEFWND_HandleWindowPosChanged( hwnd, (const WINDOWPOS *)lParam );
         break;
diff --git a/dlls/user32/win.h b/dlls/user32/win.h
index 0c5bb2be5a8..c9ac3b8e977 100644
--- a/dlls/user32/win.h
+++ b/dlls/user32/win.h
@@ -60,7 +60,6 @@ static inline void WIN_ReleasePtr( WND *ptr )
 
 extern LRESULT HOOK_CallHooks( INT id, INT code, WPARAM wparam, LPARAM lparam, BOOL unicode ) DECLSPEC_HIDDEN;
 
-extern LONG WINPOS_HandleWindowPosChanging(HWND hwnd, WINDOWPOS *winpos) DECLSPEC_HIDDEN;
 extern HWND WINPOS_WindowFromPoint( HWND hwndScope, POINT pt, INT *hittest ) DECLSPEC_HIDDEN;
 extern void WINPOS_ActivateOtherWindow( HWND hwnd ) DECLSPEC_HIDDEN;
 extern void WINPOS_SysCommandSizeMove( HWND hwnd, WPARAM wParam ) DECLSPEC_HIDDEN;
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c
index cdcd03484cd..a5bc7d9ce17 100644
--- a/dlls/user32/winpos.c
+++ b/dlls/user32/winpos.c
@@ -653,31 +653,6 @@ void WINPOS_ActivateOtherWindow(HWND hwnd)
 }
 
 
-/***********************************************************************
- *           WINPOS_HandleWindowPosChanging
- *
- * Default handling for a WM_WINDOWPOSCHANGING. Called from DefWindowProc().
- */
-LONG WINPOS_HandleWindowPosChanging( HWND hwnd, WINDOWPOS *winpos )
-{
-    LONG style = GetWindowLongW( hwnd, GWL_STYLE );
-
-    if (winpos->flags & SWP_NOSIZE) return 0;
-    if ((style & WS_THICKFRAME) || ((style & (WS_POPUP | WS_CHILD)) == 0))
-    {
-	MINMAXINFO info = NtUserGetMinMaxInfo( hwnd );
-        winpos->cx = min( winpos->cx, info.ptMaxTrackSize.x );
-        winpos->cy = min( winpos->cy, info.ptMaxTrackSize.y );
-	if (!(style & WS_MINIMIZE))
-	{
-            winpos->cx = max( winpos->cx, info.ptMinTrackSize.x );
-            winpos->cy = max( winpos->cy, info.ptMinTrackSize.y );
-	}
-    }
-    return 0;
-}
-
-
 /***********************************************************************
  *		BeginDeferWindowPos (USER32.@)
  */
diff --git a/dlls/win32u/defwnd.c b/dlls/win32u/defwnd.c
index ec9a1685325..67472246960 100644
--- a/dlls/win32u/defwnd.c
+++ b/dlls/win32u/defwnd.c
@@ -195,6 +195,25 @@ static HICON set_window_icon( HWND hwnd, WPARAM type, HICON icon )
     return ret;
 }
 
+static LONG handle_window_pos_changing( HWND hwnd, WINDOWPOS *winpos )
+{
+    LONG style = get_window_long( hwnd, GWL_STYLE );
+
+    if (winpos->flags & SWP_NOSIZE) return 0;
+    if ((style & WS_THICKFRAME) || ((style & (WS_POPUP | WS_CHILD)) == 0))
+    {
+        MINMAXINFO info = get_min_max_info( hwnd );
+        winpos->cx = min( winpos->cx, info.ptMaxTrackSize.x );
+        winpos->cy = min( winpos->cy, info.ptMaxTrackSize.y );
+        if (!(style & WS_MINIMIZE))
+        {
+            winpos->cx = max( winpos->cx, info.ptMinTrackSize.x );
+            winpos->cy = max( winpos->cy, info.ptMinTrackSize.y );
+        }
+    }
+    return 0;
+}
+
 static LRESULT handle_sys_command( HWND hwnd, WPARAM wparam, LPARAM lparam )
 {
     if (!is_window_enabled( hwnd )) return 0;
@@ -255,6 +274,9 @@ LRESULT default_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam,
             break;
         }
 
+    case WM_WINDOWPOSCHANGING:
+        return handle_window_pos_changing( hwnd, (WINDOWPOS *)lparam );
+
     case WM_PAINTICON:
     case WM_PAINT:
         {
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h
index 63eca06ecd6..e459e6df6bd 100644
--- a/dlls/win32u/win32u_private.h
+++ b/dlls/win32u/win32u_private.h
@@ -434,6 +434,7 @@ extern HWND get_parent( HWND hwnd ) DECLSPEC_HIDDEN;
 extern HWND get_hwnd_message_parent(void) DECLSPEC_HIDDEN;
 extern DPI_AWARENESS_CONTEXT get_window_dpi_awareness_context( HWND hwnd ) DECLSPEC_HIDDEN;
 extern BOOL get_window_placement( HWND hwnd, WINDOWPLACEMENT *placement ) DECLSPEC_HIDDEN;
+extern MINMAXINFO get_min_max_info( HWND hwnd ) DECLSPEC_HIDDEN;
 extern HWND get_window_relative( HWND hwnd, UINT rel ) DECLSPEC_HIDDEN;
 extern DWORD get_window_thread( HWND hwnd, DWORD *process ) DECLSPEC_HIDDEN;
 extern HWND is_current_process_window( HWND hwnd ) DECLSPEC_HIDDEN;
diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c
index 94cdd7f7280..31512c03e15 100644
--- a/dlls/win32u/window.c
+++ b/dlls/win32u/window.c
@@ -3657,7 +3657,7 @@ static void send_parent_notify( HWND hwnd, UINT msg )
  *
  * Get the minimized and maximized information for a window.
  */
-static MINMAXINFO get_min_max_info( HWND hwnd )
+MINMAXINFO get_min_max_info( HWND hwnd )
 {
     LONG style = get_window_long( hwnd, GWL_STYLE );
     LONG exstyle = get_window_long( hwnd, GWL_EXSTYLE );




More information about the wine-cvs mailing list