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
This commit is contained in:
Robert Roebling
2006-11-02 22:29:29 +00:00
parent 551270a895
commit fa78c87b40

View 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 ((maxWidth != -1) && (m_width > maxWidth)) m_width = maxWidth;
if ((maxHeight != -1) && (m_height > maxHeight)) m_height = maxHeight; 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 != -1) || (m_y != -1))
{ {
if ((m_x != old_x) || (m_y != old_y)) 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_width != old_width) || (m_height != old_height))
{ {
if (m_widget->window) if (m_widget->window)
gdk_window_resize( m_widget->window, m_width, m_height ); do_resize = true;
else 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 /* 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 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; 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; m_resizing = false;
} }