From: Robert Roebling Date: Thu, 2 Nov 2006 22:29:29 +0000 (+0000) Subject: Correct code for TLW placement, this fixes several X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/fa78c87b40d06b568d376911a2ee6ee722898cc5 Correct code for TLW placement, this fixes several 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 --- diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 85f4b536dd..ad27e39723 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -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; }