summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-06-11 01:15:14 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-06-11 01:15:14 +0000
commitadd9001e02f0ae7e917ad0f56532c42297fe555e (patch)
treec0632f5784161e9aed5534e35f06a6ca445eed66 /src
parentAdd missing Cairo header (diff)
downloadinkscape-add9001e02f0ae7e917ad0f56532c42297fe555e.tar.gz
inkscape-add9001e02f0ae7e917ad0f56532c42297fe555e.zip
Fix some broken callbacks for Gtk+ 3
(bzr r11486)
Diffstat (limited to 'src')
-rw-r--r--src/interface.cpp26
-rw-r--r--src/widgets/shrink-wrap-button.cpp43
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);
}
}