diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2012-06-11 01:15:14 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2012-06-11 01:15:14 +0000 |
| commit | add9001e02f0ae7e917ad0f56532c42297fe555e (patch) | |
| tree | c0632f5784161e9aed5534e35f06a6ca445eed66 /src | |
| parent | Add missing Cairo header (diff) | |
| download | inkscape-add9001e02f0ae7e917ad0f56532c42297fe555e.tar.gz inkscape-add9001e02f0ae7e917ad0f56532c42297fe555e.zip | |
Fix some broken callbacks for Gtk+ 3
(bzr r11486)
Diffstat (limited to 'src')
| -rw-r--r-- | src/interface.cpp | 26 | ||||
| -rw-r--r-- | src/widgets/shrink-wrap-button.cpp | 43 |
2 files changed, 45 insertions, 24 deletions
diff --git a/src/interface.cpp b/src/interface.cpp index fb4e5cf8f..f6b0ebede 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -550,8 +550,11 @@ checkitem_toggled(GtkCheckMenuItem *menuitem, gpointer user_data) reinterpret_cast<SPDesktop*>(view)->layoutWidget(); } -static gboolean -checkitem_update(GtkWidget *widget, GdkEventExpose */*event*/, gpointer user_data) +#if GTK_CHECK_VERSION(3,0,0) +static gboolean checkitem_update(GtkWidget *widget, cairo_t * /*cr*/, gpointer user_data) +#else +static gboolean checkitem_update(GtkWidget *widget, GdkEventExpose * /*event*/, gpointer user_data) +#endif { GtkCheckMenuItem *menuitem=GTK_CHECK_MENU_ITEM(widget); @@ -589,7 +592,11 @@ static void taskToggled(GtkCheckMenuItem *menuitem, gpointer userData) /** * Callback function to update the status of the radio buttons in the View -> Display mode menu (Normal, No Filters, Outline) and Color display mode. */ -static gboolean update_view_menu(GtkWidget *widget, GdkEventExpose */*event*/, gpointer user_data) +#if GTK_CHECK_VERSION(3,0,0) +static gboolean update_view_menu(GtkWidget *widget, cairo_t * /*cr*/, gpointer user_data) +#else +static gboolean update_view_menu(GtkWidget *widget, GdkEventExpose * /*event*/, gpointer user_data) +#endif { SPAction *action = (SPAction *) user_data; g_assert(action->id != NULL); @@ -633,7 +640,11 @@ static gboolean update_view_menu(GtkWidget *widget, GdkEventExpose */*event*/, g void sp_ui_menu_append_check_item_from_verb(GtkMenu *menu, Inkscape::UI::View::View *view, gchar const *label, gchar const *tip, gchar const *pref, void (*callback_toggle)(GtkCheckMenuItem *, gpointer user_data), +#if GTK_CHECK_VERSION(3,0,0) + gboolean (*callback_update)(GtkWidget *widget, cairo_t *cr, gpointer user_data), +#else gboolean (*callback_update)(GtkWidget *widget, GdkEventExpose *event, gpointer user_data), +#endif Inkscape::Verb *verb) { unsigned int shortcut = (verb) ? sp_shortcut_get_primary(verb) : 0; @@ -683,7 +694,12 @@ sp_ui_menu_append_check_item_from_verb(GtkMenu *menu, Inkscape::UI::View::View * g_object_set_data(G_OBJECT(item), "view", (gpointer) view); g_signal_connect( G_OBJECT(item), "toggled", (GCallback) callback_toggle, (void *) pref); + +#if GTK_CHECK_VERSION(3,0,0) + g_signal_connect( G_OBJECT(item), "draw", (GCallback) callback_update, (void *) pref); +#else g_signal_connect( G_OBJECT(item), "expose_event", (GCallback) callback_update, (void *) pref); +#endif g_signal_connect( G_OBJECT(item), "select", G_CALLBACK(sp_ui_menu_select), (gpointer) (action ? action->tip : tip)); g_signal_connect( G_OBJECT(item), "deselect", G_CALLBACK(sp_ui_menu_deselect), NULL); @@ -894,7 +910,11 @@ void sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, Inkscape } if (verb->get_code() != SP_VERB_NONE) { SPAction *action = verb->get_action(view); +#if GTK_CHECK_VERSION(3,0,0) + g_signal_connect( G_OBJECT(item), "draw", (GCallback) update_view_menu, (void *) action); +#else g_signal_connect( G_OBJECT(item), "expose_event", (GCallback) update_view_menu, (void *) action); +#endif } } else { sp_ui_menu_append_item_from_verb(GTK_MENU(menu), verb, view); diff --git a/src/widgets/shrink-wrap-button.cpp b/src/widgets/shrink-wrap-button.cpp index 781e3ede3..fc844f5ec 100644 --- a/src/widgets/shrink-wrap-button.cpp +++ b/src/widgets/shrink-wrap-button.cpp @@ -9,42 +9,43 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#if HAVE_CONFIG_H +#include "config.h" +#endif + #include <gtkmm/button.h> #include <gtk/gtk.h> namespace Inkscape { namespace Widgets { -namespace { +void shrink_wrap_button(Gtk::Button &button) { + button.set_border_width(0); + button.set_can_focus(false); + button.set_can_default(false); -void minimum_size(GtkWidget *widget, GtkRequisition *requisition, void *) { - GtkWidget *child(gtk_bin_get_child(GTK_BIN(widget))); + Gtk::Widget* child = button.get_child(); + Gtk::Requisition req_min; if (child) { -#if GTK_CHECK_VERSION(3,0,0) - gtk_widget_get_preferred_size(child, requisition, NULL); +#if WITH_GTKMM_3_0 + Gtk::Requisition req_nat; + child->get_preferred_size(req_min, req_nat); #else - gtk_widget_size_request(child, requisition); + req_min = child->size_request(); #endif } else { - requisition->width = 0; - requisition->height = 0; + req_min.width = 0; + req_min.height = 0; } - GtkStyle* style = gtk_widget_get_style(widget); - - requisition->width += 2 + 2 * std::max(2, style->xthickness); - requisition->height += 2 + 2 * std::max(2, style->ythickness); -} - -} + // TODO: Use Gtk::StyleContext instead + GtkStyle* style = gtk_widget_get_style(GTK_WIDGET(button.gobj())); + + req_min.width += 2 + 2 * std::max(2, style->xthickness); + req_min.height += 2 + 2 * std::max(2, style->ythickness); -void shrink_wrap_button(Gtk::Button &button) { - button.set_border_width(0); - button.set_can_focus(false); - button.set_can_default(false); - g_signal_connect_after(G_OBJECT(button.gobj()), "size_request", - G_CALLBACK(minimum_size), NULL); + button.set_size_request(req_min.width, req_min.height); } } |
