wine/dlls/x11drv winpos.c

Alexandre Julliard julliard at wine.codeweavers.com
Thu Nov 3 13:31:38 CST 2005


ChangeSet ID:	21093
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/03 13:31:38

Modified files:
	dlls/x11drv    : winpos.c 

Log message:
	Dmitry Timoshkov <dmitry at 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 */



More information about the wine-cvs mailing list