From: Robert Roebling Date: Mon, 23 Nov 1998 14:27:36 +0000 (+0000) Subject: wxFrame::size There is always a hack to solve your problems. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/3517843735988e8184d42ae1ed9434d7038552da wxFrame::size There is always a hack to solve your problems. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1026 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index 9af561f2fe..6dac92b7d3 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -269,12 +269,12 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) : #else wxImageList *imagelist = new wxImageList(32, 32); - imagelist-> Add( wxBitmap( (const char**) list_xpm )); - imagelist-> Add( wxBitmap( (const char**) choice_xpm )); - imagelist-> Add( wxBitmap( (const char**) combo_xpm )); - imagelist-> Add( wxBitmap( (const char**) text_xpm )); - imagelist-> Add( wxBitmap( (const char**) radio_xpm )); - imagelist-> Add( wxBitmap( (const char**) gauge_xpm )); + imagelist-> Add( wxBitmap( list_xpm )); + imagelist-> Add( wxBitmap( choice_xpm )); + imagelist-> Add( wxBitmap( combo_xpm )); + imagelist-> Add( wxBitmap( text_xpm )); + imagelist-> Add( wxBitmap( radio_xpm )); + imagelist-> Add( wxBitmap( gauge_xpm )); #endif wxButton *button = (wxButton*)NULL; diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index bf243361d2..b01dfd8ae7 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -184,21 +184,25 @@ bool wxFrame::Show( bool show ) { wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - if (show) + if (show && !m_sizeSet) { -/* - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - m_sizeSet = FALSE; - GetEventHandler()->ProcessEvent( event ); -*/ - - // here we give wxFrame a chance to do resize updates - // before appearing on screen. resize updates have to - // be handled in idle time because of GTK's super smart - // resize propagation algorithm. + // this yield call is required for a configure event + // to be sent by GTK to its windows. this will among + // others prompt all GtkScrolledWidgets to calculate + // if they need scrollbars which in turn is required + // for wxWindows to calculate the client size of its + // windows. wxYield(); + + // by calling GtkOnSize here, we don't have to call + // either after showing the frame, which would entail + // much ugly flicker nor from within the size_allocate + // handler, because GTK 1.1.X forbids that. + + GtkOnSize( m_x, m_y, m_width, m_height ); } + return wxWindow::Show( show ); } diff --git a/src/gtk1/frame.cpp b/src/gtk1/frame.cpp index bf243361d2..b01dfd8ae7 100644 --- a/src/gtk1/frame.cpp +++ b/src/gtk1/frame.cpp @@ -184,21 +184,25 @@ bool wxFrame::Show( bool show ) { wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - if (show) + if (show && !m_sizeSet) { -/* - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - m_sizeSet = FALSE; - GetEventHandler()->ProcessEvent( event ); -*/ - - // here we give wxFrame a chance to do resize updates - // before appearing on screen. resize updates have to - // be handled in idle time because of GTK's super smart - // resize propagation algorithm. + // this yield call is required for a configure event + // to be sent by GTK to its windows. this will among + // others prompt all GtkScrolledWidgets to calculate + // if they need scrollbars which in turn is required + // for wxWindows to calculate the client size of its + // windows. wxYield(); + + // by calling GtkOnSize here, we don't have to call + // either after showing the frame, which would entail + // much ugly flicker nor from within the size_allocate + // handler, because GTK 1.1.X forbids that. + + GtkOnSize( m_x, m_y, m_width, m_height ); } + return wxWindow::Show( show ); }