Blob Blame History Raw
Index: src/gtk/frame.cpp
===================================================================
--- src/gtk/frame.cpp	(revision 62486)
+++ src/gtk/frame.cpp	(revision 62487)
@@ -78,6 +78,30 @@
 }
 }
 
+//-----------------------------------------------------------------------------
+// "size-request" from menubar
+//-----------------------------------------------------------------------------
+
+extern "C" {
+static void menubar_size_request(GtkWidget* widget, GtkRequisition*, wxFrame* win)
+{
+    g_signal_handlers_disconnect_by_func(
+        widget, (void*)menubar_size_request, win);
+    win->UpdateMenuBarSize();
+}
+}
+
+//-----------------------------------------------------------------------------
+// "style-set" from menubar
+//-----------------------------------------------------------------------------
+
+extern "C" {
+static void menubar_style_set(GtkWidget* widget, GtkStyle*, wxFrame* win)
+{
+    g_signal_connect(widget, "size-request",
+        G_CALLBACK(menubar_size_request), win);
+}
+}
 #endif // wxUSE_MENUS_NATIVE
 
 #if wxUSE_TOOLBAR
@@ -571,6 +595,9 @@
 
     if ( m_frameMenuBar )
     {
+        g_signal_handlers_disconnect_by_func(
+            m_frameMenuBar->m_widget, (void*)menubar_style_set, this);
+
         m_frameMenuBar->UnsetInvokingWindow( this );
 
         if (m_frameMenuBar->GetWindowStyle() & wxMB_DOCKABLE)
@@ -621,6 +648,9 @@
         gtk_widget_show( m_frameMenuBar->m_widget );
 
         UpdateMenuBarSize();
+
+        g_signal_connect(menuBar->m_widget, "style-set",
+            G_CALLBACK(menubar_style_set), this);
     }
     else
     {