diff options
author | Marius Vollmer <mvo@src.gnome.org> | 1998-12-06 22:15:53 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@src.gnome.org> | 1998-12-06 22:15:53 +0000 |
commit | 3f7c856606609a77e94c5b7975ab88a49a8887c3 (patch) | |
tree | 6ee92d89e7f515507816ba3fe2f5870474470b67 /gtk/gtksignal.c | |
parent | 8abed09aea594e24850d2d3e1623ba4976457c57 (diff) | |
download | gtk+-3f7c856606609a77e94c5b7975ab88a49a8887c3.tar.gz |
Allow a NULL marshaller. (gtk_signal_connect_by_type): Allow only
* gtk/gtksignal.c (gtk_signal_newv): Allow a NULL marshaller.
(gtk_signal_connect_by_type): Allow only no_marshal handlers to
connect to signals with a NULL marshaller.
* gtk/gtktypeutils.c (gtk_type_get_info): New.
gtk/gtktypeutils.h (gtk_type_get_info): New prototype.
Diffstat (limited to 'gtk/gtksignal.c')
-rw-r--r-- | gtk/gtksignal.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gtk/gtksignal.c b/gtk/gtksignal.c index 1f4de6be71..18f938ae0c 100644 --- a/gtk/gtksignal.c +++ b/gtk/gtksignal.c @@ -268,7 +268,6 @@ gtk_signal_newv (const gchar *r_name, gchar *name; g_return_val_if_fail (r_name != NULL, 0); - g_return_val_if_fail (marshaller != NULL, 0); g_return_val_if_fail (nparams < MAX_SIGNAL_PARAMS, 0); if (nparams) g_return_val_if_fail (params != NULL, 0); @@ -1673,10 +1672,17 @@ gtk_signal_connect_by_type (GtkObject *object, GtkObjectClass *class; GtkHandler *handler; gint found_it; - + GtkSignal *signal; + g_return_val_if_fail (object != NULL, 0); g_return_val_if_fail (object->klass != NULL, 0); + /* A signal without a default marshaller can only take no_marshal + handlers. */ + + signal = LOOKUP_SIGNAL_ID (signal_id); + g_return_val_if_fail (signal->marshaller || no_marshal, 0); + /* Search through the signals for this object and make * sure the one we are adding is valid. We need to perform * the lookup on the objects parents as well. If it isn't |