From de8caa1418840f60fed8d5cf7e4c769645e4d2e7 Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Mon, 18 Mar 2013 21:36:28 +0000 Subject: [PATCH] Create own marshal_VOID__POINTER_POINTER function. At some point gtk_marshal_VOID__POINTER_POINTER() is removed (in GTK3 I think). Thus create our own version, similar to one already in print-preview.c --- src/viktreeview.c | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/viktreeview.c b/src/viktreeview.c index c4eee6f2..93eb1405 100644 --- a/src/viktreeview.c +++ b/src/viktreeview.c @@ -78,6 +78,39 @@ static gboolean vik_treeview_drag_data_delete ( GtkTreeDragSource *drag_source, G_DEFINE_TYPE (VikTreeview, vik_treeview, GTK_TYPE_TREE_VIEW) +static void vik_cclosure_marshal_VOID__POINTER_POINTER ( GClosure *closure, + GValue *return_value, + guint n_param_vals, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data ) +{ + typedef gboolean (*VikMarshalFunc_VOID__POINTER_POINTER) ( gpointer data1, + gconstpointer arg_1, + gconstpointer arg_2, + gpointer data2 ); + + register VikMarshalFunc_VOID__POINTER_POINTER callback; + register GCClosure* cc = (GCClosure*) closure; + register gpointer data1, data2; + + g_return_if_fail (n_param_vals == 3); + + if (G_CCLOSURE_SWAP_DATA(closure)) { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (VikMarshalFunc_VOID__POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + callback ( data1, + g_value_get_pointer(param_values + 1), + g_value_get_pointer(param_values + 2), + data2 ); +} + static void vik_treeview_class_init ( VikTreeviewClass *klass ) { /* Destructor */ @@ -90,8 +123,7 @@ static void vik_treeview_class_init ( VikTreeviewClass *klass ) parent_class = g_type_class_peek_parent (klass); treeview_signals[VT_ITEM_EDITED_SIGNAL] = g_signal_new ( "item_edited", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (VikTreeviewClass, item_edited), NULL, NULL, - gtk_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); - /* VOID__UINT_POINTER: kinda hack-ish, but it works. */ + vik_cclosure_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); treeview_signals[VT_ITEM_TOGGLED_SIGNAL] = g_signal_new ( "item_toggled", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (VikTreeviewClass, item_toggled), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); -- 2.39.5