diff --git a/ChangeLog b/ChangeLog index 80c56d2bb2..0b5ece2670 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +1999-01-10 Tim Janik + + * gtk/gtksignal.c (gtk_signal_lookup): if the lookup failed, try + to initialize the object class and reattempt the lookup, reported + by Paolo Molaro . + Sat Jan 9 17:36:20 1999 Owen Taylor * configure.in (ALL_LINGUAS): Added cs to ALL_LINGUAS. diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 80c56d2bb2..0b5ece2670 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,9 @@ +1999-01-10 Tim Janik + + * gtk/gtksignal.c (gtk_signal_lookup): if the lookup failed, try + to initialize the object class and reattempt the lookup, reported + by Paolo Molaro . + Sat Jan 9 17:36:20 1999 Owen Taylor * configure.in (ALL_LINGUAS): Added cs to ALL_LINGUAS. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 80c56d2bb2..0b5ece2670 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +1999-01-10 Tim Janik + + * gtk/gtksignal.c (gtk_signal_lookup): if the lookup failed, try + to initialize the object class and reattempt the lookup, reported + by Paolo Molaro . + Sat Jan 9 17:36:20 1999 Owen Taylor * configure.in (ALL_LINGUAS): Added cs to ALL_LINGUAS. diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 80c56d2bb2..0b5ece2670 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,9 @@ +1999-01-10 Tim Janik + + * gtk/gtksignal.c (gtk_signal_lookup): if the lookup failed, try + to initialize the object class and reattempt the lookup, reported + by Paolo Molaro . + Sat Jan 9 17:36:20 1999 Owen Taylor * configure.in (ALL_LINGUAS): Added cs to ALL_LINGUAS. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 80c56d2bb2..0b5ece2670 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +1999-01-10 Tim Janik + + * gtk/gtksignal.c (gtk_signal_lookup): if the lookup failed, try + to initialize the object class and reattempt the lookup, reported + by Paolo Molaro . + Sat Jan 9 17:36:20 1999 Owen Taylor * configure.in (ALL_LINGUAS): Added cs to ALL_LINGUAS. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 80c56d2bb2..0b5ece2670 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +1999-01-10 Tim Janik + + * gtk/gtksignal.c (gtk_signal_lookup): if the lookup failed, try + to initialize the object class and reattempt the lookup, reported + by Paolo Molaro . + Sat Jan 9 17:36:20 1999 Owen Taylor * configure.in (ALL_LINGUAS): Added cs to ALL_LINGUAS. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 80c56d2bb2..0b5ece2670 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +1999-01-10 Tim Janik + + * gtk/gtksignal.c (gtk_signal_lookup): if the lookup failed, try + to initialize the object class and reattempt the lookup, reported + by Paolo Molaro . + Sat Jan 9 17:36:20 1999 Owen Taylor * configure.in (ALL_LINGUAS): Added cs to ALL_LINGUAS. diff --git a/gtk/gtksignal.c b/gtk/gtksignal.c index 198e3b9ea3..d3ce62d60c 100644 --- a/gtk/gtksignal.c +++ b/gtk/gtksignal.c @@ -402,27 +402,38 @@ gtk_signal_lookup (const gchar *name, GtkType object_type) { GtkSignalHash hash; - + GtkType lookup_type; + gpointer class = NULL; + g_return_val_if_fail (name != NULL, 0); g_return_val_if_fail (gtk_type_is_a (object_type, GTK_TYPE_OBJECT), 0); + relookup: + + lookup_type = object_type; hash.quark = g_quark_try_string (name); if (hash.quark) { - while (object_type) + while (lookup_type) { guint signal_id; - hash.object_type = object_type; + hash.object_type = lookup_type; signal_id = GPOINTER_TO_UINT (g_hash_table_lookup (gtk_signal_hash_table, &hash)); if (signal_id) return signal_id; - object_type = gtk_type_parent (object_type); + lookup_type = gtk_type_parent (lookup_type); } } - + + if (!class) + { + class = gtk_type_class (object_type); + goto relookup; + } + return 0; }