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)
This commit is contained in:
Matthias Clasen 2005-02-28 04:43:22 +00:00 committed by Matthias Clasen
parent 0a206df7e9
commit 2c24a9f374
4 changed files with 43 additions and 9 deletions

View File

@ -1,5 +1,8 @@
2005-02-27 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaction.c (connect_proxy): Improve the handling
of buttons as action proxys. (#165534, Milosz Derezynski)
* gtk/gtklabel.c (gtk_label_size_request): Fix a typo.
(#168646, Vincent Untz)

View File

@ -1,5 +1,8 @@
2005-02-27 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaction.c (connect_proxy): Improve the handling
of buttons as action proxys. (#165534, Milosz Derezynski)
* gtk/gtklabel.c (gtk_label_size_request): Fix a typo.
(#168646, Vincent Untz)

View File

@ -1,5 +1,8 @@
2005-02-27 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaction.c (connect_proxy): Improve the handling
of buttons as action proxys. (#165534, Milosz Derezynski)
* gtk/gtklabel.c (gtk_label_size_request): Fix a typo.
(#168646, Vincent Untz)

View File

@ -738,6 +738,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,
@ -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);