]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/tbargtk.cpp
Minimum is now GTK+ 2.4
[wxWidgets.git] / src / gtk / tbargtk.cpp
index d81c1fb2a67cb9fae17a47c46f0df1a7d9e1ba33..b403ca69d6ae508aca4aa3f48b9a10be97070efd 100644 (file)
@@ -8,14 +8,6 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -333,6 +325,20 @@ static gint gtk_toolbar_tool_callback( GtkWidget *WXUNUSED(widget),
 }
 }
 
+//-----------------------------------------------------------------------------
+// "size_request" from m_toolbar
+//-----------------------------------------------------------------------------
+
+extern "C" {
+static void
+size_request(GtkWidget*, GtkRequisition* req, wxToolBar* win)
+{
+    const wxSize margins = win->GetMargins();
+    req->width  += margins.x;
+    req->height += 2 * margins.y;
+}
+}
+
 //-----------------------------------------------------------------------------
 // InsertChild callback for wxToolBar
 //-----------------------------------------------------------------------------
@@ -445,6 +451,9 @@ bool wxToolBar::Create( wxWindow *parent,
 
     PostCreation(size);
 
+    g_signal_connect_after(m_toolbar, "size_request",
+        G_CALLBACK(size_request), this);
+
     return true;
 }
 
@@ -635,11 +644,6 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase)
             break;
     }
 
-    GtkRequisition req;
-    (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget) )->size_request )
-        (m_widget, &req );
-    m_width = req.width + m_xMargin;
-    m_height = req.height + 2*m_yMargin;
     InvalidateBestSize();
 
     return true;