summaryrefslogtreecommitdiffstats
path: root/src/widgets/toolbox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/toolbox.cpp')
-rw-r--r--src/widgets/toolbox.cpp40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index 58c7958ba..e1cbf8ff6 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -584,7 +584,7 @@ static void update_aux_toolbox(SPDesktop *desktop, SPEventContext *eventcontext,
static void setup_commands_toolbox(GtkWidget *toolbox, SPDesktop *desktop);
static void update_commands_toolbox(SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget *toolbox);
-static GtkWidget * sp_toolbox_button_new_from_verb_with_doubleclick( GtkWidget *t, Inkscape::IconSize size, SPButtonType type,
+static GtkToolItem * sp_toolbox_button_item_new_from_verb_with_doubleclick( GtkWidget *t, Inkscape::IconSize size, SPButtonType type,
Inkscape::Verb *verb, Inkscape::Verb *doubleclick_verb,
Inkscape::UI::View::View *view);
@@ -656,18 +656,19 @@ Gtk::Widget* VerbAction::create_tool_item_vfunc()
// Gtk::Widget* widg = Gtk::Action::create_tool_item_vfunc();
Inkscape::IconSize toolboxSize = ToolboxFactory::prefToSize("/toolbox/tools/small");
GtkWidget* toolbox = 0;
- GtkWidget *button = sp_toolbox_button_new_from_verb_with_doubleclick( toolbox, toolboxSize,
- SP_BUTTON_TYPE_TOGGLE,
- verb,
- verb2,
- view );
+ GtkToolItem *button_toolitem = sp_toolbox_button_item_new_from_verb_with_doubleclick( toolbox, toolboxSize,
+ SP_BUTTON_TYPE_TOGGLE,
+ verb,
+ verb2,
+ view );
+
+ GtkWidget* button_widget = gtk_bin_get_child(GTK_BIN(button_toolitem));
+
if ( active ) {
- sp_button_toggle_set_down( SP_BUTTON(button), active);
+ sp_button_toggle_set_down( SP_BUTTON(button_widget), active);
}
- gtk_widget_show_all( button );
- Gtk::Widget* wrapped = Glib::wrap(button);
- Gtk::ToolItem* holder = Gtk::manage(new Gtk::ToolItem());
- holder->add(*wrapped);
+ gtk_widget_show_all( button_widget );
+ Gtk::ToolItem* holder = Glib::wrap(button_toolitem);
// g_message("create_tool_item_vfunc() = %p for '%s'", holder, verb->get_id());
return holder;
@@ -841,7 +842,7 @@ static void delete_prefspusher(GtkObject * /*obj*/, PrefPusher *watcher )
// ------------------------------------------------------
-GtkWidget * sp_toolbox_button_new_from_verb_with_doubleclick(GtkWidget *t, Inkscape::IconSize size, SPButtonType type,
+GtkToolItem * sp_toolbox_button_item_new_from_verb_with_doubleclick(GtkWidget *t, Inkscape::IconSize size, SPButtonType type,
Inkscape::Verb *verb, Inkscape::Verb *doubleclick_verb,
Inkscape::UI::View::View *view)
{
@@ -861,24 +862,27 @@ GtkWidget * sp_toolbox_button_new_from_verb_with_doubleclick(GtkWidget *t, Inksc
/* fixme: Implement sp_button_new_from_action */
GtkWidget *b = sp_button_new(size, type, action, doubleclick_action);
gtk_widget_show(b);
-
+ GtkToolItem *b_toolitem = gtk_tool_item_new();
+ gtk_container_add(GTK_CONTAINER(b_toolitem), b);
unsigned int shortcut = sp_shortcut_get_primary(verb);
if (shortcut != GDK_KEY_VoidSymbol) {
gchar *key = sp_shortcut_get_label(shortcut);
gchar *tip = g_strdup_printf ("%s (%s)", action->tip, key);
if ( t ) {
- gtk_toolbar_append_widget( GTK_TOOLBAR(t), b, tip, 0 );
+ gtk_toolbar_insert(GTK_TOOLBAR(t), b_toolitem, -1);
+ gtk_widget_set_tooltip_text(b, tip);
}
g_free(tip);
g_free(key);
} else {
if ( t ) {
- gtk_toolbar_append_widget( GTK_TOOLBAR(t), b, action->tip, 0 );
+ gtk_toolbar_insert(GTK_TOOLBAR(t), b_toolitem, -1);
+ gtk_widget_set_tooltip_text(b, action->tip);
}
}
- return b;
+ return b_toolitem;
}
@@ -2075,7 +2079,7 @@ void setup_tool_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
void update_tool_toolbox( SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget * /*toolbox*/ )
{
gchar const *const tname = ( eventcontext
- ? gtk_type_name(GTK_OBJECT_TYPE(eventcontext))
+ ? g_type_name(G_OBJECT_TYPE(eventcontext))
: NULL );
Glib::RefPtr<Gtk::ActionGroup> mainActions = create_or_fetch_actions( desktop );
@@ -2178,7 +2182,7 @@ void setup_aux_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
void update_aux_toolbox(SPDesktop * /*desktop*/, SPEventContext *eventcontext, GtkWidget *toolbox)
{
gchar const *tname = ( eventcontext
- ? gtk_type_name(GTK_OBJECT_TYPE(eventcontext))
+ ? g_type_name(G_OBJECT_TYPE(eventcontext))
: NULL );
for (int i = 0 ; aux_toolboxes[i].type_name ; i++ ) {
GtkWidget *sub_toolbox = GTK_WIDGET(g_object_get_data(G_OBJECT(toolbox), aux_toolboxes[i].data_name));