]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/toplevel.cpp
We don't use the old GtkCombo widget any more
[wxWidgets.git] / src / gtk / toplevel.cpp
index de88a66586182a132c703d8a0baa501659236903..2aa4cc4e5a8806560c0af91b90b25d6f5c614cc8 100644 (file)
@@ -366,13 +366,25 @@ gtk_frame_map_callback( GtkWidget* widget,
             win->m_width = rect.width;
             win->m_height = rect.height;
             decorSize = size;
-            wxSizeEvent event(win->GetSize(), win->GetId());
-            event.SetEventObject(win);
-            win->GetEventHandler()->ProcessEvent(event);
         }
     }
 
+    const bool wasIconized = win->IsIconized();
+
     win->SetIconizeState(false);
+
+    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;
 }
 }
@@ -430,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)