Commit 596c16cc authored by Alexandre Julliard's avatar Alexandre Julliard

user32: Post notification to the desktop window for window creation/activation.

parent 4c92dd98
...@@ -1102,6 +1102,7 @@ static void NC_DoNCPaint( HWND hwnd, HRGN clip ) ...@@ -1102,6 +1102,7 @@ static void NC_DoNCPaint( HWND hwnd, HRGN clip )
*/ */
LRESULT NC_HandleNCPaint( HWND hwnd , HRGN clip) LRESULT NC_HandleNCPaint( HWND hwnd , HRGN clip)
{ {
HWND parent = GetAncestor( hwnd, GA_PARENT );
DWORD dwStyle = GetWindowLongW( hwnd, GWL_STYLE ); DWORD dwStyle = GetWindowLongW( hwnd, GWL_STYLE );
if( dwStyle & WS_VISIBLE ) if( dwStyle & WS_VISIBLE )
...@@ -1110,6 +1111,9 @@ LRESULT NC_HandleNCPaint( HWND hwnd , HRGN clip) ...@@ -1110,6 +1111,9 @@ LRESULT NC_HandleNCPaint( HWND hwnd , HRGN clip)
WINPOS_RedrawIconTitle( hwnd ); WINPOS_RedrawIconTitle( hwnd );
else else
NC_DoNCPaint( hwnd, clip ); NC_DoNCPaint( hwnd, clip );
if (parent == GetDesktopWindow())
PostMessageW( parent, WM_PARENTNOTIFY, WM_NCPAINT, (LPARAM)hwnd );
} }
return 0; return 0;
} }
...@@ -1122,6 +1126,7 @@ LRESULT NC_HandleNCPaint( HWND hwnd , HRGN clip) ...@@ -1122,6 +1126,7 @@ LRESULT NC_HandleNCPaint( HWND hwnd , HRGN clip)
*/ */
LRESULT NC_HandleNCActivate( HWND hwnd, WPARAM wParam, LPARAM lParam ) LRESULT NC_HandleNCActivate( HWND hwnd, WPARAM wParam, LPARAM lParam )
{ {
HWND parent;
WND* wndPtr = WIN_GetPtr( hwnd ); WND* wndPtr = WIN_GetPtr( hwnd );
if (!wndPtr || wndPtr == WND_OTHER_PROCESS) return FALSE; if (!wndPtr || wndPtr == WND_OTHER_PROCESS) return FALSE;
...@@ -1133,6 +1138,7 @@ LRESULT NC_HandleNCActivate( HWND hwnd, WPARAM wParam, LPARAM lParam ) ...@@ -1133,6 +1138,7 @@ LRESULT NC_HandleNCActivate( HWND hwnd, WPARAM wParam, LPARAM lParam )
*/ */
if (wParam) wndPtr->flags |= WIN_NCACTIVATED; if (wParam) wndPtr->flags |= WIN_NCACTIVATED;
else wndPtr->flags &= ~WIN_NCACTIVATED; else wndPtr->flags &= ~WIN_NCACTIVATED;
parent = wndPtr->parent;
WIN_ReleasePtr( wndPtr ); WIN_ReleasePtr( wndPtr );
/* This isn't documented but is reproducible in at least XP SP2 and /* This isn't documented but is reproducible in at least XP SP2 and
...@@ -1144,6 +1150,9 @@ LRESULT NC_HandleNCActivate( HWND hwnd, WPARAM wParam, LPARAM lParam ) ...@@ -1144,6 +1150,9 @@ LRESULT NC_HandleNCActivate( HWND hwnd, WPARAM wParam, LPARAM lParam )
WINPOS_RedrawIconTitle( hwnd ); WINPOS_RedrawIconTitle( hwnd );
else else
NC_DoNCPaint( hwnd, (HRGN)1 ); NC_DoNCPaint( hwnd, (HRGN)1 );
if (parent == GetDesktopWindow())
PostMessageW( parent, WM_PARENTNOTIFY, WM_NCACTIVATE, (LPARAM)hwnd );
} }
return TRUE; return TRUE;
......
...@@ -1659,6 +1659,9 @@ HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module, ...@@ -1659,6 +1659,9 @@ HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module,
send_parent_notify( hwnd, WM_CREATE ); send_parent_notify( hwnd, WM_CREATE );
if (!IsWindow( hwnd )) return 0; if (!IsWindow( hwnd )) return 0;
if (parent == GetDesktopWindow())
PostMessageW( parent, WM_PARENTNOTIFY, WM_CREATE, (LPARAM)hwnd );
if (cs->style & WS_VISIBLE) if (cs->style & WS_VISIBLE)
{ {
if (cs->style & WS_MAXIMIZE) if (cs->style & WS_MAXIMIZE)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment