Module: wine Branch: refs/heads/master Commit: 6d5f5447eaae4837d8da9210d21fd3265a0073d7 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6d5f5447eaae4837d8da9210...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Mar 6 21:02:59 2006 +0100
x11drv: Make sure to never manipulate the root window, even if we own the desktop window.
---
dlls/x11drv/window.c | 6 ++++-- dlls/x11drv/winpos.c | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/dlls/x11drv/window.c b/dlls/x11drv/window.c index 8eca46e..5cac2ed 100644 --- a/dlls/x11drv/window.c +++ b/dlls/x11drv/window.c @@ -145,7 +145,8 @@ void X11DRV_sync_window_style( Display * int mask = get_window_attributes( data, &attr );
wine_tsx11_lock(); - XChangeWindowAttributes( display, data->whole_window, mask, &attr ); + if (data->whole_window != DefaultRootWindow(display)) + XChangeWindowAttributes( display, data->whole_window, mask, &attr ); wine_tsx11_unlock(); }
@@ -715,7 +716,8 @@ static void destroy_whole_window( Displa wine_tsx11_lock(); XSync( gdi_display, False ); /* flush any reference to this drawable in GDI queue */ XDeleteContext( display, data->whole_window, winContext ); - XDestroyWindow( display, data->whole_window ); /* this destroys client too */ + if (data->whole_window != DefaultRootWindow(display)) + XDestroyWindow( display, data->whole_window ); data->whole_window = 0; if (data->xic) { diff --git a/dlls/x11drv/winpos.c b/dlls/x11drv/winpos.c index c49b8c9..e912531 100644 --- a/dlls/x11drv/winpos.c +++ b/dlls/x11drv/winpos.c @@ -586,9 +586,16 @@ BOOL X11DRV_set_window_pos( HWND hwnd, H } SERVER_END_REQ;
- if (win == WND_DESKTOP) + if (win == WND_DESKTOP || data->whole_window == DefaultRootWindow(gdi_display)) { data->whole_rect = data->client_rect = data->window_rect = *rectWindow; + if (win != WND_DESKTOP) + { + win->rectWindow = *rectWindow; + win->rectClient = *rectClient; + win->dwStyle = new_style; + WIN_ReleasePtr( win ); + } return ret; }