diff options
author | Matthias Clasen <mclasen@redhat.com> | 2005-02-28 04:43:22 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2005-02-28 04:43:22 +0000 |
commit | 2c24a9f3748eec46eeeb22ee96fafec0b8298c7a (patch) | |
tree | cf4ec27c5f40148c75159d5c1d3bae30a2ebff5e /gtk | |
parent | 0a206df7e97269750f21a266417e5c96329576aa (diff) | |
download | gtk+-2c24a9f3748eec46eeeb22ee96fafec0b8298c7a.tar.gz |
Improve the handling of buttons as action proxys. (#165534, Milosz
2005-02-27 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaction.c (connect_proxy): Improve the handling
of buttons as action proxys. (#165534, Milosz Derezynski)
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkaction.c | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/gtk/gtkaction.c b/gtk/gtkaction.c index bb3c4242d3..c33f915bf5 100644 --- a/gtk/gtkaction.c +++ b/gtk/gtkaction.c @@ -739,6 +739,17 @@ gtk_action_sync_stock_id (GtkAction *action, } static void +gtk_action_sync_button_stock_id (GtkAction *action, + GParamSpec *pspec, + GtkWidget *proxy) +{ + g_object_set (G_OBJECT (proxy), + "stock-id", + action->private_data->stock_id, + NULL); +} + +static void gtk_action_sync_tooltip (GtkAction *action, GParamSpec *pspec, GtkWidget *proxy) @@ -931,16 +942,30 @@ connect_proxy (GtkAction *action, else if (GTK_IS_BUTTON (proxy)) { /* button specific synchronisers ... */ - - /* synchronise the label */ - g_object_set (proxy, - "label", action->private_data->short_label, - "use_underline", TRUE, - NULL); - g_signal_connect_object (action, "notify::short-label", - G_CALLBACK (gtk_action_sync_short_label), - proxy, 0); + if (gtk_button_get_use_stock (GTK_BUTTON (proxy))) + { + /* synchronise stock-id */ + g_object_set (proxy, + "stock-id", action->private_data->stock_id, + NULL); + g_signal_connect_object (action, "notify::stock-id", + G_CALLBACK (gtk_action_sync_button_stock_id), + proxy, 0); + } + else if (GTK_IS_LABEL(GTK_BIN(proxy)->child)) + { + /* synchronise the label */ + g_object_set (proxy, + "label", action->private_data->short_label, + "use_underline", TRUE, + NULL); + g_signal_connect_object (action, "notify::short-label", + G_CALLBACK (gtk_action_sync_short_label), + proxy, 0); + + } + /* we leave the button alone if there is a custom child */ g_signal_connect_object (proxy, "clicked", G_CALLBACK (gtk_action_activate), action, G_CONNECT_SWAPPED); |