ChangeSet ID: 21093 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/03 13:31:38
Modified files: dlls/x11drv : winpos.c
Log message: Dmitry Timoshkov dmitry@codeweavers.com Stricter check whether a window needs to be mapped on the screen.
Patch: http://cvs.winehq.org/patch.py?id=21093
Old revision New revision Changes Path 1.139 1.140 +12 -11 wine/dlls/x11drv/winpos.c
Index: wine/dlls/x11drv/winpos.c diff -u -p wine/dlls/x11drv/winpos.c:1.139 wine/dlls/x11drv/winpos.c:1.140 --- wine/dlls/x11drv/winpos.c:1.139 3 Nov 2005 19:31:38 -0000 +++ wine/dlls/x11drv/winpos.c 3 Nov 2005 19:31:38 -0000 @@ -643,11 +643,12 @@ BOOL X11DRV_set_window_pos( HWND hwnd, H
if (data->whole_window && !(swp_flags & SWP_WINE_NOHOSTMOVE)) { - if (!(old_style & WS_VISIBLE) && (new_style & WS_VISIBLE)) + if ((new_style & WS_VISIBLE) && !(new_style & WS_MINIMIZE) && + X11DRV_is_window_rect_mapped( rectWindow )) { - /* window got shown, map it */ - if (X11DRV_is_window_rect_mapped( rectWindow )) + if (!(old_style & WS_VISIBLE)) { + /* window got shown, map it */ TRACE( "mapping win %p\n", hwnd ); X11DRV_sync_window_style( display, data ); X11DRV_set_wm_hints( display, data ); @@ -655,14 +656,14 @@ BOOL X11DRV_set_window_pos( HWND hwnd, H XMapWindow( display, data->whole_window ); wine_tsx11_unlock(); } - } - else if ((new_style & WS_VISIBLE) && X11DRV_is_window_rect_mapped( rectWindow )) - { - /* resizing from zero size to non-zero -> map */ - TRACE( "mapping non zero size or off-screen win %p\n", hwnd ); - wine_tsx11_lock(); - XMapWindow( display, data->whole_window ); - wine_tsx11_unlock(); + else if ((swp_flags & (SWP_NOSIZE | SWP_NOMOVE)) != (SWP_NOSIZE | SWP_NOMOVE)) + { + /* resizing from zero size to non-zero -> map */ + TRACE( "mapping non zero size or off-screen win %p\n", hwnd ); + wine_tsx11_lock(); + XMapWindow( display, data->whole_window ); + wine_tsx11_unlock(); + } } wine_tsx11_lock(); XFlush( display ); /* FIXME: should not be necessary */