g_return_val_if_fail (n_params < SIGNAL_MAX_PARAMS, 0);
- closure = g_signal_type_closure_new (object_type, function_offset);
+ closure = g_signal_type_cclosure_new (object_type, function_offset);
- return g_signal_newv (name, object_type, signal_flags, closure, NULL, marshaller, return_val, n_params, params);
+ return g_signal_newv (name, object_type, signal_flags, closure, NULL, NULL, marshaller, return_val, n_params, params);
}
guint
{
g_return_if_fail (GTK_IS_OBJECT (object));
- g_signal_stop_emission (object, g_signal_lookup (name, G_OBJECT_TYPE (object)));
+ g_signal_stop_emission (object, g_signal_lookup (name, G_OBJECT_TYPE (object)), 0);
}
void
{
g_return_if_fail (GTK_IS_OBJECT (object));
- g_signal_connect_closure (object,
- g_signal_lookup (signal, G_OBJECT_TYPE (object)),
- g_cclosure_new_object_swap (func, alive_object),
- FALSE);
+ g_signal_connect_closure_by_id (object,
+ g_signal_lookup (signal, G_OBJECT_TYPE (object)), 0,
+ g_cclosure_new_object_swap (func, alive_object),
+ FALSE);
}
void
closure = g_cclosure_new (func, func_data, NULL);
g_object_watch_closure (G_OBJECT (alive_object), closure);
- g_signal_connect_closure (object,
- g_signal_lookup (signal, G_OBJECT_TYPE (object)),
- closure,
- FALSE);
+ g_signal_connect_closure_by_id (object,
+ g_signal_lookup (signal, G_OBJECT_TYPE (object)), 0,
+ closure,
+ FALSE);
}
guint
g_return_val_if_fail (GTK_IS_OBJECT (object), 0);
g_return_val_if_fail (unsupported == NULL, 0);
- return g_signal_connect_closure (object,
- g_signal_lookup (name, G_OBJECT_TYPE (object)),
- (object_signal
- ? g_cclosure_new_swap
- : g_cclosure_new) (func,
- data,
- (GClosureNotify) destroy_func),
- after);
+ return g_signal_connect_closure_by_id (object,
+ g_signal_lookup (name, G_OBJECT_TYPE (object)), 0,
+ (object_signal
+ ? g_cclosure_new_swap
+ : g_cclosure_new) (func,
+ data,
+ (GClosureNotify) destroy_func),
+ after);
}
void
GSignalMatchType match,
guint action)
{
- guint id;
+ guint n_handlers;
g_return_if_fail (GTK_IS_OBJECT (object));
+
+ switch (action)
+ {
+ case 0: n_handlers = g_signal_handlers_disconnect_matched (object, match, 0, 0, NULL, func, data); break;
+ case 1: n_handlers = g_signal_handlers_block_matched (object, match, 0, 0, NULL, func, data); break;
+ case 2: n_handlers = g_signal_handlers_unblock_matched (object, match, 0, 0, NULL, func, data); break;
+ default: n_handlers = 0; break;
+ }
- id = g_signal_handler_find (object, match, 0, NULL, func, data);
-
- if (!id)
- g_warning ("unable to find signal handler for object(%p) with func(%p) and data(%p)",
- object, func, data);
- else
- switch (action)
- {
- case 0: g_signal_handler_disconnect (object, id); break;
- case 1: g_signal_handler_block (object, id); break;
- case 2: g_signal_handler_unblock (object, id); break;
- }
+ if (!n_handlers)
+ g_warning ("unable to find signal handler for object(%s:%p) with func(%p) and data(%p)",
+ G_OBJECT_TYPE_NAME (object), object, func, data);
}
static inline gboolean
g_signal_query (signal_id, &query);
g_return_if_fail (query.signal_id != 0);
- g_return_if_fail (g_type_conforms_to (GTK_OBJECT_TYPE (object), query.itype));
+ g_return_if_fail (g_type_is_a (GTK_OBJECT_TYPE (object), query.itype));
g_return_if_fail (query.n_params < SIGNAL_MAX_PARAMS);
if (query.n_params > 0)
g_return_if_fail (args != NULL);
GValue *value = params + 1 + i;
GtkArg *arg = args + i;
- g_value_init (value, arg->type);
+ g_value_init (value, arg->type & ~G_SIGNAL_TYPE_STATIC_SCOPE);
if (!gtk_arg_static_to_value (arg, value))
{
g_warning ("%s: failed to convert arg type `%s' to value type `%s'",
- G_STRLOC, g_type_name (arg->type), g_type_name (G_VALUE_TYPE (value)));
+ G_STRLOC, g_type_name (arg->type & ~G_SIGNAL_TYPE_STATIC_SCOPE),
+ g_type_name (G_VALUE_TYPE (value)));
return;
}
}
if (query.return_type != G_TYPE_NONE)
g_value_init (&rvalue, query.return_type);
- g_signal_emitv (params, signal_id, &rvalue);
+ g_signal_emitv (params, signal_id, 0, &rvalue);
if (query.return_type != G_TYPE_NONE)
{
return failed;
}
+#if 0
void
gtk_signal_emit (GtkObject *object,
guint signal_id,
if (!abort)
gtk_signal_emitv (object, signal_id, args);
}
+#endif
+
+void
+gtk_signal_emit (GtkObject *object,
+ guint signal_id,
+ ...)
+{
+ va_list var_args;
+
+ g_return_if_fail (GTK_IS_OBJECT (object));
+
+ va_start (var_args, signal_id);
+ g_signal_emit_valist (G_OBJECT (object), signal_id, 0, var_args);
+ va_end (var_args);
+}
void
gtk_signal_emit_by_name (GtkObject *object,