summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <jpu@src.gnome.org>2006-08-22 20:46:30 +0000
committerJuan Pablo Ugarte <jpu@src.gnome.org>2006-08-22 20:46:30 +0000
commit857885c4c823063bcc05dbeb7ec8efc1648d2d93 (patch)
treef5a69f9800c477ba39dbf234bc70ef43ab14b908
parent496bc51d50056440f341f28afb0bede851a0d171 (diff)
downloadglade-857885c4c823063bcc05dbeb7ec8efc1648d2d93.tar.gz
glade_widget_class_add_signals() simplification.
* src/glade-widget-class.c: glade_widget_class_add_signals() simplification.
-rw-r--r--ChangeLog5
-rw-r--r--src/glade-widget-class.c24
2 files changed, 10 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index ff3811ea..0ee7df2b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-08-18 Juan Pablo Ugarte <juanpablougarte@gmail.com>
+
+ * src/glade-widget-class.c: glade_widget_class_add_signals()
+ simplification.
+
2006-08-22 Tristan Van Berkom <tvb@gnome.org>
* widgets/gtk+.xml.in, widgets/gnome.xml.in: Fixed non-translatable strings on many
diff --git a/src/glade-widget-class.c b/src/glade-widget-class.c
index 36fd6f22..04670168 100644
--- a/src/glade-widget-class.c
+++ b/src/glade-widget-class.c
@@ -299,38 +299,24 @@ glade_widget_class_add_signals (GList **signals, GType type)
}
}
-static gboolean
-gwc_iface_not_implemented_by_parent (GType type, GType iface)
-{
- GType *i, *p;
-
- type = g_type_parent (type);
- if (g_type_is_a (type, G_TYPE_OBJECT) == FALSE) return TRUE;
-
- for (i = p = g_type_interfaces (type, NULL); *i; i++)
- if (*i == iface) { g_free (p); return FALSE; }
-
- g_free (p);
- return TRUE;
-}
-
static GList *
glade_widget_class_list_signals (GladeWidgetClass *class)
{
GList *signals = NULL;
- GType type, *i, *p;
+ GType type, parent, *i, *p;
g_return_val_if_fail (class->type != 0, NULL);
- for (type = class->type; g_type_is_a (type, G_TYPE_OBJECT);
- type = g_type_parent (type))
+ for (type = class->type; g_type_is_a (type, G_TYPE_OBJECT); type = parent)
{
+ parent = g_type_parent (type);
+
/* Add class signals */
glade_widget_class_add_signals (&signals, type);
/* Add class interfaces signals */
for (i = p = g_type_interfaces (type, NULL); *i; i++)
- if (gwc_iface_not_implemented_by_parent (type, *i))
+ if (!glade_util_class_implements_interface (parent, *i))
glade_widget_class_add_signals (&signals, *i);
g_free (p);