From 2a74bd27636ecb69b182ff5e107d06c590302b15 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Fri, 9 Nov 2007 05:10:41 +0000 Subject: [PATCH] modified fix for empty client area, first one broke sizing of some children git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/toplevel.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 462ec86004..2aa4cc4e5a 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -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) -- 2.45.2