From 2c3bb20acb8eaf6d7daeb64965ac63e1d953d77c Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Tue, 28 Oct 2014 17:32:01 +0000 Subject: [PATCH] Merge r65001 from shell-experiments branch: [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 svn path=/trunk/; revision=65077 --- reactos/win32ss/user/user32/windows/defwnd.c | 47 ++++++++++---------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/reactos/win32ss/user/user32/windows/defwnd.c b/reactos/win32ss/user/user32/windows/defwnd.c index ee3cd806c62..d57326c2d73 100644 --- a/reactos/win32ss/user/user32/windows/defwnd.c +++ b/reactos/win32ss/user/user32/windows/defwnd.c @@ -447,6 +447,27 @@ UserSendUiUpdateMsg(HWND hwnd, LPARAM lParam) 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 @@ DefWndSetIcon(PWND pWnd, WPARAM wParam, LPARAM lParam) 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 @@ RealDefWindowProcA(HWND hWnd, 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 @@ RealDefWindowProcW(HWND hWnd, 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; } -- 2.17.1