Commit 8cb06405 authored by Vitaly Lipatov's avatar Vitaly Lipatov

[PATCH v2] winex11.drv: Make "RoamingWindow" not managed. (eterbug #15105)

parent 9409fd44
......@@ -259,12 +259,26 @@ static struct x11drv_win_data *alloc_win_data( Display *display, HWND hwnd )
*/
static BOOL is_window_managed( HWND hwnd, UINT swp_flags, const RECT *window_rect )
{
static const WCHAR RoamingWindow[] = { 'H','w','n','d','W','r','a','p','p','e','r','[','D','e','f','a','u','l','t','D','o','m','a','i','n',';',';' };
DWORD style, ex_style;
WCHAR buf[256];
UNICODE_STRING name = { .Buffer = buf, .MaximumLength = 256 * sizeof(WCHAR) };
if (!managed_mode) return FALSE;
/* child windows are not managed */
style = NtUserGetWindowLongW( hwnd, GWL_STYLE );
ex_style = NtUserGetWindowLongW( hwnd, GWL_EXSTYLE );
NtUserGetClassName(hwnd, FALSE, &name);
/* Make "RoamingWindow" not managed, eterbug #15105 */
if (!wcsncmp(buf, RoamingWindow, ARRAY_SIZE(RoamingWindow)) && style == 0x06c80000 && ex_style == 0x00080100)
{
TRACE("RoamingWindow: %p => NOT managed\n", hwnd);
return FALSE;
}
/* child windows are not managed */
if ((style & (WS_CHILD|WS_POPUP)) == WS_CHILD) return FALSE;
/* activated windows are managed */
if (!(swp_flags & (SWP_NOACTIVATE|SWP_HIDEWINDOW))) return TRUE;
......@@ -289,7 +303,6 @@ static BOOL is_window_managed( HWND hwnd, UINT swp_flags, const RECT *window_rec
return TRUE;
}
/* application windows are managed */
ex_style = NtUserGetWindowLongW( hwnd, GWL_EXSTYLE );
if (ex_style & WS_EX_APPWINDOW) return TRUE;
/* windows that own popups are managed */
if (has_owned_popups( hwnd )) return TRUE;
......
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