From: Robert Roebling <robert@roebling.de> Date: Sat, 23 Oct 1999 10:40:04 +0000 (+0000) Subject: Fixed resizing problem with GTK 1.2.3 notebooks. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d7928388eb193d4fece79ccecf4b61bbb9344b3b Fixed resizing problem with GTK 1.2.3 notebooks. Added wxSizer test to controls sample. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4150 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index e38e0b2eb5..c08dff3807 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -554,6 +554,8 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) // --------------- TEST CODE ---------------------- + // layout constraints + panel = new wxPanel(m_notebook); panel->SetAutoLayout( true ); @@ -576,7 +578,22 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) wxButton *pMyButton2 = new wxButton(panel, -1, "Test Button 2" ); pMyButton2->SetConstraints( c ); - m_notebook->AddPage(panel, "test layout"); + m_notebook->AddPage(panel, "wxLayoutConstraint"); + + // sizer + + panel = new wxPanel(m_notebook); + panel->SetAutoLayout( true ); + + wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL ); + + sizer->Add( new wxButton(panel, -1, "Test Button" ), 3, wxALL, 10 ); + sizer->Add( 20,20, 1 ); + sizer->Add( new wxButton(panel, -1, "Test Button 2" ), 3, wxGROW|wxALL, 10 ); + + panel->SetSizer( sizer ); + + m_notebook->AddPage(panel, "wxSizer"); // --------------- TEST CODE ---------------------- diff --git a/src/gtk/notebook.cpp b/src/gtk/notebook.cpp index da7f735b6b..5d9d65d088 100644 --- a/src/gtk/notebook.cpp +++ b/src/gtk/notebook.cpp @@ -124,21 +124,30 @@ static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* win->SetSize( alloc->x, alloc->y, alloc->width, alloc->height ); + /* GTK 1.2 up to version 1.2.5 is broken so that we have to call allocate + here in order to make repositioning after resizing to take effect. */ + if ((gtk_major_version == 1) && + (gtk_minor_version == 2) && + (gtk_micro_version < 6) && + (win->m_wxwindow) && + (GTK_WIDGET_REALIZED(win->m_wxwindow))) + { + gtk_widget_size_allocate( win->m_wxwindow, alloc ); + } } //----------------------------------------------------------------------------- // "realize" from m_widget //----------------------------------------------------------------------------- -/* GTK 1.2 up to version 1.2.5 is broken so that we have to call a queue_resize - here in order to take repositioning before showing to take effect. */ - static gint gtk_notebook_realized_callback( GtkWidget * WXUNUSED(widget), wxWindow *win ) { if (g_isIdle) wxapp_install_idle_handler(); + /* GTK 1.2 up to version 1.2.5 is broken so that we have to call a queue_resize + here in order to make repositioning before showing to take effect. */ gtk_widget_queue_resize( win->m_widget ); return FALSE; diff --git a/src/gtk1/notebook.cpp b/src/gtk1/notebook.cpp index da7f735b6b..5d9d65d088 100644 --- a/src/gtk1/notebook.cpp +++ b/src/gtk1/notebook.cpp @@ -124,21 +124,30 @@ static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* win->SetSize( alloc->x, alloc->y, alloc->width, alloc->height ); + /* GTK 1.2 up to version 1.2.5 is broken so that we have to call allocate + here in order to make repositioning after resizing to take effect. */ + if ((gtk_major_version == 1) && + (gtk_minor_version == 2) && + (gtk_micro_version < 6) && + (win->m_wxwindow) && + (GTK_WIDGET_REALIZED(win->m_wxwindow))) + { + gtk_widget_size_allocate( win->m_wxwindow, alloc ); + } } //----------------------------------------------------------------------------- // "realize" from m_widget //----------------------------------------------------------------------------- -/* GTK 1.2 up to version 1.2.5 is broken so that we have to call a queue_resize - here in order to take repositioning before showing to take effect. */ - static gint gtk_notebook_realized_callback( GtkWidget * WXUNUSED(widget), wxWindow *win ) { if (g_isIdle) wxapp_install_idle_handler(); + /* GTK 1.2 up to version 1.2.5 is broken so that we have to call a queue_resize + here in order to make repositioning before showing to take effect. */ gtk_widget_queue_resize( win->m_widget ); return FALSE;