]> git.saurik.com Git - wxWidgets.git/commitdiff
modified fix for empty client area, first one broke sizing of some children
authorPaul Cornett <paulcor@bullseye.com>
Fri, 9 Nov 2007 05:10:41 +0000 (05:10 +0000)
committerPaul Cornett <paulcor@bullseye.com>
Fri, 9 Nov 2007 05:10:41 +0000 (05:10 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/toplevel.cpp

index 462ec86004d5d72d7ad5c45912b09ee6e1f19863..2aa4cc4e5a8806560c0af91b90b25d6f5c614cc8 100644 (file)
@@ -369,16 +369,21 @@ gtk_frame_map_callback( GtkWidget* widget,
         }
     }
 
+    const bool wasIconized = win->IsIconized();
+
     win->SetIconizeState(false);
 
-    // Because GetClientSize() returns (0,0) when IsIconized() is true,
-    // a size event must be sent here, just in case GetClientSize() was
-    // called while iconized.
-    // This specifically happens when restoring a tlw that was "rolled up"
-    // with some WMs.
-    wxSizeEvent event(win->GetSize(), win->GetId());
-    event.SetEventObject(win);
-    win->GetEventHandler()->ProcessEvent(event);
+    if (wasIconized)
+    {
+        // Because GetClientSize() returns (0,0) when IsIconized() is true,
+        // a size event must be generated, just in case GetClientSize() was
+        // called while iconized. This specifically happens when restoring a
+        // tlw that was "rolled up" with some WMs.
+        // Queue a resize rather than sending size event directly to allow
+        // children to be made visible first.
+        win->m_oldClientWidth = 0;
+        gtk_widget_queue_resize(win->m_wxwindow);
+    }
 
     return false;
 }
@@ -437,9 +442,8 @@ static gboolean property_notify_event(
                 if (win->m_width  < 0) win->m_width  = 0;
                 if (win->m_height < 0) win->m_height = 0;
                 decorSize = size;
-                wxSizeEvent event(win->GetSize(), win->GetId());
-                event.SetEventObject(win);
-                win->GetEventHandler()->ProcessEvent(event);
+                win->m_oldClientWidth = 0;
+                gtk_widget_queue_resize(win->m_wxwindow);
             }
         }
         if (data)