From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/event.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 9475b0236fb..f33db32839f 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -1346,12 +1346,25 @@ static BOOL X11DRV_PropertyNotify( HWND hwnd, XEvent *xev ) void X11DRV_ActivateWindow( HWND hwnd, HWND previous ) { struct x11drv_win_data *data; + BOOL flush = FALSE;
- if (!is_virtual_desktop()) set_net_active_window( hwnd, previous ); + if (!is_virtual_desktop()) + { + set_net_active_window( hwnd, previous ); + flush = TRUE; + }
- if (!(data = get_win_data( hwnd ))) return; - if (!data->managed || data->embedder) set_input_focus( data ); - release_win_data( data ); + if ((data = get_win_data( hwnd ))) + { + if (!data->managed || data->embedder) + { + set_input_focus( data ); + flush = TRUE; + } + release_win_data( data ); + } + + if (flush) XFlush( x11drv_thread_data()->display ); }
static void drag_drop_enter( UINT entries_size, struct format_entry *entries )
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/window.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 78f8dd0e158..f5e0e41c9af 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -3301,6 +3301,8 @@ void X11DRV_SetWindowIcons( HWND hwnd, HICON icon, const ICONINFO *ii, HICON ico if (!(data = get_win_data( hwnd ))) return; set_window_icon_data( data, icon, ii, icon_small, ii_small ); set_wm_hints( data ); + + XFlush( data->display ); release_win_data( data ); }
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/window.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index f5e0e41c9af..eb318741c23 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -2503,12 +2503,17 @@ void X11DRV_SetWindowStyle( HWND hwnd, INT offset, STYLESTRUCT *style ) { struct x11drv_win_data *data; DWORD changed = style->styleNew ^ style->styleOld; + BOOL flush = FALSE;
if (hwnd == NtUserGetDesktopWindow()) return; if (!(data = get_win_data( hwnd ))) return; if (!data->whole_window) goto done;
- if (offset == GWL_STYLE && (changed & WS_DISABLED)) set_wm_hints( data ); + if (offset == GWL_STYLE && (changed & WS_DISABLED)) + { + set_wm_hints( data ); + flush = TRUE; + }
if (offset == GWL_EXSTYLE) { @@ -2519,7 +2524,10 @@ void X11DRV_SetWindowStyle( HWND hwnd, INT offset, STYLESTRUCT *style ) sync_window_opacity( data->display, data->whole_window, 0, 0 ); } if (changed & WS_EX_TRANSPARENT) sync_window_style( data ); + flush = TRUE; } + + if (flush) XFlush( data->display ); done: release_win_data( data ); }
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/window.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index eb318741c23..3d02449a51f 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -3350,7 +3350,10 @@ void X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha, DWO set_window_visual( data, &default_visual, FALSE );
if (data->whole_window) + { sync_window_opacity( data->display, data->whole_window, alpha, flags ); + XFlush( data->display ); + }
data->layered = TRUE; release_win_data( data ); @@ -3363,6 +3366,7 @@ void X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha, DWO sync_window_opacity( gdi_display, win, alpha, flags ); if (flags & LWA_COLORKEY) FIXME( "LWA_COLORKEY not supported on foreign process window %p\n", hwnd ); + XFlush( gdi_display ); } } }
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/window.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 3d02449a51f..ae57e0b4d4e 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -3382,7 +3382,10 @@ void X11DRV_UpdateLayeredWindow( HWND hwnd, BYTE alpha, UINT flags ) if (!(data = get_win_data( hwnd ))) return;
if (data->whole_window) + { sync_window_opacity( data->display, data->whole_window, alpha, flags ); + XFlush( data->display ); + }
release_win_data( data ); }