summaryrefslogtreecommitdiff
path: root/gtk/gtksignal.c
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>2000-10-25 23:38:46 +0000
committerTim Janik <timj@src.gnome.org>2000-10-25 23:38:46 +0000
commit49631b2900247f3f64517977da9098eebdee92de (patch)
treec3234502bd03a3712807d642f91e0af92b9e1295 /gtk/gtksignal.c
parentd69496c06092c0b8943b7240761ae27401c65e9f (diff)
downloadgdk-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.c29
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)));