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;