[gtk+/native-layout] Bug 602099 - Actions can be activatable too
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/native-layout] Bug 602099 - Actions can be activatable too
- Date: Sun, 4 Apr 2010 02:04:43 +0000 (UTC)
commit 52e84a9eccfac7bccc39bc6cd41ac8c2d6038b4f
Author: Matthew Barnes <mbarnes redhat com>
Date: Tue Dec 15 08:00:44 2009 -0500
Bug 602099 - Actions can be activatable too
Add a couple type checks in gtk_activatable_do_set_related_action() to
allow both GtkWidgets and GtkActions to implement GtkActivatable. Bug
602099 describes a use case for this.
Also add a GObject prerequisite to the GtkActivatable interface.
gtk/gtkactivatable.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkactivatable.c b/gtk/gtkactivatable.c
index 4f92e52..4aa1b36 100644
--- a/gtk/gtkactivatable.c
+++ b/gtk/gtkactivatable.c
@@ -276,13 +276,16 @@ gtk_activatable_get_type (void)
{
static GType activatable_type = 0;
- if (!activatable_type)
+ if (!activatable_type) {
activatable_type =
g_type_register_static_simple (G_TYPE_INTERFACE, I_("GtkActivatable"),
sizeof (GtkActivatableIface),
(GClassInitFunc) gtk_activatable_class_init,
0, NULL, 0);
+ g_type_interface_add_prerequisite (activatable_type, G_TYPE_OBJECT);
+ }
+
return activatable_type;
}
@@ -445,7 +448,9 @@ gtk_activatable_do_set_related_action (GtkActivatable *activatable,
{
g_signal_handlers_disconnect_by_func (prev_action, gtk_activatable_action_notify, activatable);
- _gtk_action_remove_from_proxy_list (prev_action, GTK_WIDGET (activatable));
+ /* Check the type so that actions can be activatable too. */
+ if (GTK_IS_WIDGET (activatable))
+ _gtk_action_remove_from_proxy_list (prev_action, GTK_WIDGET (activatable));
/* Some apps are using the object data directly...
* so continue to set it for a bit longer
@@ -477,7 +482,8 @@ gtk_activatable_do_set_related_action (GtkActivatable *activatable,
g_signal_connect (G_OBJECT (action), "notify", G_CALLBACK (gtk_activatable_action_notify), activatable);
- _gtk_action_add_to_proxy_list (action, GTK_WIDGET (activatable));
+ if (GTK_IS_WIDGET (activatable))
+ _gtk_action_add_to_proxy_list (action, GTK_WIDGET (activatable));
g_object_set_data (G_OBJECT (activatable), "gtk-action", action);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]