]> git.saurik.com Git - wxWidgets.git/commitdiff
wxFrame::size There is always a hack to solve your problems.
authorRobert Roebling <robert@roebling.de>
Mon, 23 Nov 1998 14:27:36 +0000 (14:27 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 23 Nov 1998 14:27:36 +0000 (14:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1026 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/controls/controls.cpp
src/gtk/frame.cpp
src/gtk1/frame.cpp

index 9af561f2fec21b437993cc37cdf3a4b2ea290eaa..6dac92b7d3438bb621a7149275af8b1c452fb3e9 100644 (file)
@@ -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;
index bf243361d23dd43aad7a3525035480d5bd8c67f8..b01dfd8ae7d72f0798f8ecdda35844af21f31224 100644 (file)
@@ -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 );
 }
 
index bf243361d23dd43aad7a3525035480d5bd8c67f8..b01dfd8ae7d72f0798f8ecdda35844af21f31224 100644 (file)
@@ -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 );
 }