Commit 026d41c5 authored by Alexandre Julliard's avatar Alexandre Julliard

winex11: Only map the window the first time that WS_VISIBLE is set through WM_SETREDRAW.

parent 5b2286a5
...@@ -1819,17 +1819,16 @@ void CDECL X11DRV_SetWindowText( HWND hwnd, LPCWSTR text ) ...@@ -1819,17 +1819,16 @@ void CDECL X11DRV_SetWindowText( HWND hwnd, LPCWSTR text )
*/ */
void CDECL X11DRV_SetWindowStyle( HWND hwnd, INT offset, STYLESTRUCT *style ) void CDECL X11DRV_SetWindowStyle( HWND hwnd, INT offset, STYLESTRUCT *style )
{ {
struct x11drv_win_data *data; struct x11drv_win_data *data = X11DRV_get_win_data( hwnd );
DWORD changed; DWORD changed;
if (hwnd == GetDesktopWindow()) return; if (hwnd == GetDesktopWindow()) return;
changed = style->styleNew ^ style->styleOld; changed = style->styleNew ^ style->styleOld;
if (offset == GWL_STYLE && (changed & WS_VISIBLE) && (style->styleNew & WS_VISIBLE)) /* if WS_VISIBLE was set through WM_SETREDRAW, map the window if it's the first time */
if (offset == GWL_STYLE && (changed & WS_VISIBLE) && (style->styleNew & WS_VISIBLE) && !data)
{ {
/* we don't unmap windows, that causes trouble with the window manager */ if (!(data = X11DRV_create_win_data( hwnd ))) return;
if (!(data = X11DRV_get_win_data( hwnd )) &&
!(data = X11DRV_create_win_data( hwnd ))) return;
if (data->whole_window && is_window_rect_mapped( &data->window_rect )) if (data->whole_window && is_window_rect_mapped( &data->window_rect ))
{ {
...@@ -1838,20 +1837,13 @@ void CDECL X11DRV_SetWindowStyle( HWND hwnd, INT offset, STYLESTRUCT *style ) ...@@ -1838,20 +1837,13 @@ void CDECL X11DRV_SetWindowStyle( HWND hwnd, INT offset, STYLESTRUCT *style )
if (!data->mapped) map_window( display, data, style->styleNew ); if (!data->mapped) map_window( display, data, style->styleNew );
} }
} }
if (!data || !data->whole_window) return;
if (offset == GWL_STYLE && (changed & WS_DISABLED)) if (offset == GWL_STYLE && (changed & WS_DISABLED))
{ set_wm_hints( thread_display(), data );
data = X11DRV_get_win_data( hwnd );
if (data && data->whole_window)
set_wm_hints( thread_display(), data );
}
if (offset == GWL_EXSTYLE && (changed & WS_EX_LAYERED)) if (offset == GWL_EXSTYLE && (changed & WS_EX_LAYERED)) /* changing WS_EX_LAYERED resets attributes */
{ sync_window_opacity( thread_display(), data->whole_window, 0, 0, 0 );
/* changing WS_EX_LAYERED resets attributes */
if ((data = X11DRV_get_win_data( hwnd )) && data->whole_window)
sync_window_opacity( thread_display(), data->whole_window, 0, 0, 0 );
}
} }
......
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