From: Robert Roebling Date: Tue, 12 Dec 2006 21:43:55 +0000 (+0000) Subject: Moved allocate size correction code from combobox X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/86b65467096ed1cd7c8b914bc64db6680fddafc9 Moved allocate size correction code from combobox to toolbar code since that is where the problem is and it affects other controls, too. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43955 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/combobox.cpp b/src/gtk/combobox.cpp index 80c4c23856..8dc1c7a820 100644 --- a/src/gtk/combobox.cpp +++ b/src/gtk/combobox.cpp @@ -201,29 +201,6 @@ gtkcombobox_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) } } -extern "C" { -static -void gtkcombobox_size_callback( GtkWidget *widget, - GtkAllocation *alloc, - wxWindow *win ) -{ - if (win->GetParent()->m_wxwindow) return; - - // we are probably a wxToolBar - - wxSize size = win->GetEffectiveMinSize(); - if (size.y != alloc->height) - { - GtkAllocation alloc2; - alloc2.x = alloc->x; - alloc2.y = (alloc->height - size.y + 3) / 2; - alloc2.width = alloc->width; - alloc2.height = size.y; - gtk_widget_size_allocate( widget, &alloc2 ); - } -} -} - #endif //----------------------------------------------------------------------------- @@ -373,9 +350,6 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, g_signal_connect_after (m_widget, "changed", G_CALLBACK (gtkcombobox_changed_callback), this); - // Connect to in order to correct size_allocate events - g_signal_connect_after (m_widget, "size_allocate", - G_CALLBACK (gtkcombobox_size_callback), this); } else #endif diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index dd18e1d3a9..3ce3d74f7d 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -215,6 +215,27 @@ static gint gtk_toolbar_tool_callback( GtkWidget *WXUNUSED(widget), } } +extern "C" { +static +void gtktoolwidget_size_callback( GtkWidget *widget, + GtkAllocation *alloc, + wxWindow *win ) +{ + // this shouldn't happen... + if (win->GetParent()->m_wxwindow) return; + + wxSize size = win->GetEffectiveMinSize(); + if (size.y != alloc->height) + { + GtkAllocation alloc2; + alloc2.x = alloc->x; + alloc2.y = (alloc->height - size.y + 3) / 2; + alloc2.width = alloc->width; + alloc2.height = size.y; + gtk_widget_size_allocate( widget, &alloc2 ); + } +} +} //----------------------------------------------------------------------------- // InsertChild callback for wxToolBar //----------------------------------------------------------------------------- @@ -453,6 +474,11 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) (const char *) NULL, posGtk ); + + // connect after in order to correct size_allocate events + g_signal_connect_after (tool->GetControl()->m_widget, "size_allocate", + G_CALLBACK (gtktoolwidget_size_callback), tool->GetControl()); + break; }