[PATCH 2/5] win32u: Move default WM_PAINT implementation from user32.

Jacek Caban wine at gitlab.winehq.org
Thu May 12 07:52:59 CDT 2022


From: Jacek Caban <jacek at codeweavers.com>

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
---
 dlls/user32/defwnd.c | 25 -------------------------
 dlls/win32u/defwnd.c | 26 +++++++++++++++++++++++++-
 2 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/dlls/user32/defwnd.c b/dlls/user32/defwnd.c
index 67cb77a3121..fdb100c9556 100644
--- a/dlls/user32/defwnd.c
+++ b/dlls/user32/defwnd.c
@@ -266,31 +266,6 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
         DEFWND_Print(hwnd, (HDC)wParam, lParam);
         return 0;
 
-    case WM_PAINTICON:
-    case WM_PAINT:
-        {
-            PAINTSTRUCT ps;
-            HDC hdc = NtUserBeginPaint( hwnd, &ps );
-            if( hdc )
-            {
-              HICON hIcon;
-              if (IsIconic(hwnd) && ((hIcon = (HICON)GetClassLongPtrW( hwnd, GCLP_HICON))) )
-              {
-                  RECT rc;
-                  int x, y;
-
-                  GetClientRect( hwnd, &rc );
-                  x = (rc.right - rc.left - GetSystemMetrics(SM_CXICON))/2;
-                  y = (rc.bottom - rc.top - GetSystemMetrics(SM_CYICON))/2;
-                  TRACE("Painting class icon: vis rect=(%s)\n",
-                        wine_dbgstr_rect(&ps.rcPaint));
-                  DrawIcon( hdc, x, y, hIcon );
-              }
-              NtUserEndPaint( hwnd, &ps );
-            }
-            return 0;
-        }
-
     case WM_SYNCPAINT:
         NtUserRedrawWindow ( hwnd, NULL, 0, RDW_ERASENOW | RDW_ERASE | RDW_ALLCHILDREN );
         return 0;
diff --git a/dlls/win32u/defwnd.c b/dlls/win32u/defwnd.c
index 3aa5a8286b3..c345a6ab188 100644
--- a/dlls/win32u/defwnd.c
+++ b/dlls/win32u/defwnd.c
@@ -243,7 +243,31 @@ LRESULT default_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam,
             if (user_callbacks) user_callbacks->free_win_ptr( win );
             win->pScroll = NULL;
             release_win_ptr( win );
-            return 0;
+            break;
+        }
+
+    case WM_PAINTICON:
+    case WM_PAINT:
+        {
+            PAINTSTRUCT ps;
+            HDC hdc = NtUserBeginPaint( hwnd, &ps );
+            if (hdc)
+            {
+                HICON icon;
+                if (is_iconic(hwnd) && ((icon = UlongToHandle( get_class_long( hwnd, GCLP_HICON, FALSE )))))
+                {
+                    RECT rc;
+                    int x, y;
+
+                    get_client_rect( hwnd, &rc );
+                    x = (rc.right - rc.left - get_system_metrics( SM_CXICON )) / 2;
+                    y = (rc.bottom - rc.top - get_system_metrics( SM_CYICON )) / 2;
+                    TRACE( "Painting class icon: vis rect=(%s)\n", wine_dbgstr_rect(&ps.rcPaint) );
+                    NtUserDrawIconEx( hdc, x, y, icon, 0, 0, 0, 0, DI_NORMAL | DI_COMPAT | DI_DEFAULTSIZE );
+                }
+                NtUserEndPaint( hwnd, &ps );
+            }
+            break;
         }
 
     case WM_SETTEXT:
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/64



More information about the wine-devel mailing list