diff options
author | Tim Janik <timj@gtk.org> | 2000-10-25 23:38:46 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 2000-10-25 23:38:46 +0000 |
commit | 49631b2900247f3f64517977da9098eebdee92de (patch) | |
tree | c3234502bd03a3712807d642f91e0af92b9e1295 /gtk/gtksignal.c | |
parent | d69496c06092c0b8943b7240761ae27401c65e9f (diff) | |
download | gdk-pixbuf-49631b2900247f3f64517977da9098eebdee92de.tar.gz |
use g_value_set_static_{string|boxed} where applicable.
Thu Oct 26 00:51:52 2000 Tim Janik <timj@gtk.org>
* gtk/gtksignal.c:
(gtk_signal_emitv): use g_value_set_static_{string|boxed} where
applicable.
* gtk/gtk-boxed.defs (GtkSelectionData): specify
gtk_selection_data_copy and gtk_selection_data_free
do GtkSelectionData work as params in signals.
Diffstat (limited to 'gtk/gtksignal.c')
-rw-r--r-- | gtk/gtksignal.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/gtk/gtksignal.c b/gtk/gtksignal.c index 004b7293f..365b09cec 100644 --- a/gtk/gtksignal.c +++ b/gtk/gtksignal.c @@ -206,6 +206,33 @@ gtk_arg_to_value (GtkArg *arg, } static inline gboolean +gtk_arg_static_to_value (GtkArg *arg, + GValue *value) +{ + switch (G_TYPE_FUNDAMENTAL (arg->type)) + { + case G_TYPE_CHAR: g_value_set_char (value, GTK_VALUE_CHAR (*arg)); break; + case G_TYPE_UCHAR: g_value_set_uchar (value, GTK_VALUE_UCHAR (*arg)); break; + case G_TYPE_BOOLEAN: g_value_set_boolean (value, GTK_VALUE_BOOL (*arg)); break; + case G_TYPE_INT: g_value_set_int (value, GTK_VALUE_INT (*arg)); break; + case G_TYPE_UINT: g_value_set_uint (value, GTK_VALUE_UINT (*arg)); break; + case G_TYPE_LONG: g_value_set_long (value, GTK_VALUE_LONG (*arg)); break; + case G_TYPE_ULONG: g_value_set_ulong (value, GTK_VALUE_ULONG (*arg)); break; + case G_TYPE_ENUM: g_value_set_enum (value, GTK_VALUE_ENUM (*arg)); break; + case G_TYPE_FLAGS: g_value_set_flags (value, GTK_VALUE_FLAGS (*arg)); break; + case G_TYPE_FLOAT: g_value_set_float (value, GTK_VALUE_FLOAT (*arg)); break; + case G_TYPE_DOUBLE: g_value_set_double (value, GTK_VALUE_DOUBLE (*arg)); break; + case G_TYPE_STRING: g_value_set_static_string (value, GTK_VALUE_STRING (*arg)); break; + case G_TYPE_BOXED: g_value_set_static_boxed (value, GTK_VALUE_BOXED (*arg)); break; + case G_TYPE_POINTER: g_value_set_pointer (value, GTK_VALUE_POINTER (*arg)); break; + case G_TYPE_OBJECT: g_value_set_object (value, GTK_VALUE_POINTER (*arg)); break; + default: + return FALSE; + } + return TRUE; +} + +static inline gboolean gtk_arg_set_from_value (GtkArg *arg, GValue *value, gboolean copy_string) @@ -296,7 +323,7 @@ gtk_signal_emitv (GtkObject *object, GtkArg *arg = args + i; g_value_init (value, arg->type); - if (!gtk_arg_to_value (arg, value)) + 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))); |