]> git.saurik.com Git - wxWidgets.git/commitdiff
Correct code for TLW placement, this fixes several
authorRobert Roebling <robert@roebling.de>
Thu, 2 Nov 2006 22:29:29 +0000 (22:29 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 2 Nov 2006 22:29:29 +0000 (22:29 +0000)
    AUI problem when dragging panes quickly (the
    hint window would appear in the wrong place).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42966 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/toplevel.cpp

index 85f4b536dd1f9949cff890da5a1b9552d189bb57..ad27e3972352574aeac8e4ee998d6819f3c18553 100644 (file)
@@ -908,20 +908,26 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si
     if ((maxWidth != -1) && (m_width > maxWidth)) m_width = maxWidth;
     if ((maxHeight != -1) && (m_height > maxHeight)) m_height = maxHeight;
 
+    bool do_move = false;
+    bool do_resize = false;
+
     if ((m_x != -1) || (m_y != -1))
     {
         if ((m_x != old_x) || (m_y != old_y))
         {
-            gtk_widget_set_uposition( m_widget, m_x, m_y );
+            if (m_widget->window)
+                do_move = true;
+            else
+                gtk_window_move( GTK_WINDOW(m_widget), m_x, m_y );
         }
     }
 
     if ((m_width != old_width) || (m_height != old_height))
     {
         if (m_widget->window)
-            gdk_window_resize( m_widget->window, m_width, m_height );
+            do_resize = true;
         else
-            gtk_window_set_default_size( GTK_WINDOW(m_widget), m_width, m_height );
+            gtk_window_resize( GTK_WINDOW(m_widget), m_width, m_height );
 
         /* we set the size in GtkOnSize, i.e. mostly the actual resizing is
            done either directly before the frame is shown or in idle time
@@ -929,6 +935,14 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si
         m_sizeSet = false;
     }
 
+    if (do_move && do_resize)
+        gdk_window_move_resize( m_widget->window, m_x, m_y, m_width, m_height );
+    else if (do_move)
+        gdk_window_move( m_widget->window, m_x, m_y );
+    else if (do_resize)
+        gdk_window_resize( m_widget->window, m_width, m_height );
+    
+
     m_resizing = false;
 }