]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't change client size of TLW when centering it in wxGTK.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 23 Jul 2012 15:02:53 +0000 (15:02 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 23 Jul 2012 15:02:53 +0000 (15:02 +0000)
Setting the frame client size and then calling Centre() on it resulted in the
frame coming up with a wrong client size in wxGTK because the call to Centre()
resulted in calling wxTopLevelWindow::DoSetSize() which unconditionally reset
m_deferShowAllowed to true, undoing setting it to false in DoSetClientSize().

Only reset m_deferShowAllowed if the size was really changed but not if the
window was only moved, as happens when centering it.

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

src/gtk/toplevel.cpp

index 4027023d7c3eeac5dfacd5244a17b73a49b9cd49..1bcc3ce8e94f80b39cde3679237efbbc634a6ef3 100644 (file)
@@ -1022,8 +1022,6 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si
 {
     wxCHECK_RET( m_widget, wxT("invalid frame") );
 
 {
     wxCHECK_RET( m_widget, wxT("invalid frame") );
 
-    m_deferShowAllowed = true;
-
     // deal with the position first
     int old_x = m_x;
     int old_y = m_y;
     // deal with the position first
     int old_x = m_x;
     int old_y = m_y;
@@ -1057,6 +1055,8 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si
     if (m_height < 1) m_height = 1;
     if (m_width != oldSize.x || m_height != oldSize.y)
     {
     if (m_height < 1) m_height = 1;
     if (m_width != oldSize.x || m_height != oldSize.y)
     {
+        m_deferShowAllowed = true;
+
         int w, h;
         GTKDoGetSize(&w, &h);
         gtk_window_resize(GTK_WINDOW(m_widget), w, h);
         int w, h;
         GTKDoGetSize(&w, &h);
         gtk_window_resize(GTK_WINDOW(m_widget), w, h);