Author: gadamopoulos
Date: Sun Oct 26 00:58:52 2014
New Revision: 65001

URL: http://svn.reactos.org/svn/reactos?rev=65001&view=rev
Log:
[user32]
- Properly notify the theme engine that the caption needs to be repainted on 
WM_SETICON
- Fixes a classic frame appearing when themes are enabled and we navigate to a 
different folder

Modified:
    branches/shell-experiments/win32ss/user/user32/windows/defwnd.c

Modified: branches/shell-experiments/win32ss/user/user32/windows/defwnd.c
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/win32ss/user/user32/windows/defwnd.c?rev=65001&r1=65000&r2=65001&view=diff
==============================================================================
--- branches/shell-experiments/win32ss/user/user32/windows/defwnd.c     
[iso-8859-1] (original)
+++ branches/shell-experiments/win32ss/user/user32/windows/defwnd.c     
[iso-8859-1] Sun Oct 26 00:58:52 2014
@@ -447,6 +447,27 @@
     return TRUE;
 }
 
+static void
+UserPaintCaption(HWND hwnd)
+{
+    /* FIXME: this is not 100% correct */
+
+    /* 
+     * When themes are not enabled we can go on and paint the non client area.
+     * However if we do that with themes enabled we will draw a classic frame.
+     * This is sovled by sending a themes specific message to notify the themes
+     * engine that the caption needs to be redrawn 
+     */
+    if(gpsi->dwSRVIFlags & SRVINFO_APIHOOK)
+    {
+        SendMessage(hwnd, WM_NCUAHDRAWCAPTION,0,0);
+    }
+    else
+    {
+        DefWndNCPaint(hwnd, HRGN_WINDOW, -1);
+    }
+}
+
 // WM_SETICON
 LRESULT FASTCALL
 DefWndSetIcon(PWND pWnd, WPARAM wParam, LPARAM lParam)
@@ -481,7 +502,7 @@
     NtUserSetProp(UserHMGetHandle(pWnd), gpsi->atomIconSmProp, hIconSmall);
 
     if ((pWnd->style & WS_CAPTION ) == WS_CAPTION)
-       DefWndNCPaint(UserHMGetHandle(pWnd), HRGN_WINDOW, -1);  /* Repaint 
caption */
+       UserPaintCaption(UserHMGetHandle(pWnd));  /* Repaint caption */
 
     return (LRESULT)hIconOld;
 }
@@ -1454,17 +1475,7 @@
             DefSetText(hWnd, (PCWSTR)lParam, TRUE);
 
             if ((GetWindowLongPtrW(hWnd, GWL_STYLE) & WS_CAPTION) == 
WS_CAPTION)
-            {
-                /* FIXME: this is not 100% correct */
-                if(gpsi->dwSRVIFlags & SRVINFO_APIHOOK)
-                {
-                    SendMessage(hWnd, WM_NCUAHDRAWCAPTION,0,0);
-                }
-                else
-                {
-                    DefWndNCPaint(hWnd, HRGN_WINDOW, -1);
-                }
-            }
+                UserPaintCaption(hWnd);
             Result = 1;
             break;
         }
@@ -1626,17 +1637,7 @@
             DefSetText(hWnd, (PCWSTR)lParam, FALSE);
 
             if ((GetWindowLongPtrW(hWnd, GWL_STYLE) & WS_CAPTION) == 
WS_CAPTION)
-            {
-                /* FIXME: this is not 100% correct */
-                if(gpsi->dwSRVIFlags & SRVINFO_APIHOOK)
-                {
-                    SendMessage(hWnd, WM_NCUAHDRAWCAPTION,0,0);
-                }
-                else
-                {
-                    DefWndNCPaint(hWnd, HRGN_WINDOW, -1);
-                }
-            }
+                UserPaintCaption(hWnd);
             Result = 1;
             break;
         }


Reply via email to