summaryrefslogtreecommitdiff
path: root/gtk/gtksignal.c
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@src.gnome.org>1998-12-06 22:15:53 +0000
committerMarius Vollmer <mvo@src.gnome.org>1998-12-06 22:15:53 +0000
commit3f7c856606609a77e94c5b7975ab88a49a8887c3 (patch)
tree6ee92d89e7f515507816ba3fe2f5870474470b67 /gtk/gtksignal.c
parent8abed09aea594e24850d2d3e1623ba4976457c57 (diff)
downloadgtk+-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.c10
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