From c64c7ee080d4a5a64e9b8a056ada6b452be8bde4 Mon Sep 17 00:00:00 2001 From: Murray Cumming Date: Wed, 17 Dec 2003 17:52:47 +0000 Subject: [PATCH] Actually call the default signal handlers instead of calling the 2003-12-07 Murray Cumming * gtk/gtktreemodel.c: (row_inserted_marshal, row_deleted_marshal, rows_reorderered_marshal) Actually call the default signal handlers instead of calling the marshallers themselves in an endless loop. These default signal handler callbacks are not actually set so this is only noticed by gtkmm at the moment. Bug 123923. --- ChangeLog | 9 ++++++ ChangeLog.pre-2-10 | 9 ++++++ ChangeLog.pre-2-4 | 9 ++++++ ChangeLog.pre-2-6 | 9 ++++++ ChangeLog.pre-2-8 | 9 ++++++ gtk/gtktreemodel.c | 75 +++++++++++++++++++++++++--------------------- 6 files changed, 86 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 946835be5f..938775f54f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2003-12-07 Murray Cumming + + * gtk/gtktreemodel.c: + (row_inserted_marshal, row_deleted_marshal, rows_reorderered_marshal) + Actually call the default signal handlers instead of calling the + marshallers themselves in an endless loop. These default signal handler + callbacks are not actually set so this is only noticed by gtkmm at + the moment. Bug 123923. + 2003-12-16 Federico Mena Quintero * gtk/gtkfilesystem.h (struct _GtkFileSystemIface): Added a diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 946835be5f..938775f54f 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2003-12-07 Murray Cumming + + * gtk/gtktreemodel.c: + (row_inserted_marshal, row_deleted_marshal, rows_reorderered_marshal) + Actually call the default signal handlers instead of calling the + marshallers themselves in an endless loop. These default signal handler + callbacks are not actually set so this is only noticed by gtkmm at + the moment. Bug 123923. + 2003-12-16 Federico Mena Quintero * gtk/gtkfilesystem.h (struct _GtkFileSystemIface): Added a diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 946835be5f..938775f54f 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,12 @@ +2003-12-07 Murray Cumming + + * gtk/gtktreemodel.c: + (row_inserted_marshal, row_deleted_marshal, rows_reorderered_marshal) + Actually call the default signal handlers instead of calling the + marshallers themselves in an endless loop. These default signal handler + callbacks are not actually set so this is only noticed by gtkmm at + the moment. Bug 123923. + 2003-12-16 Federico Mena Quintero * gtk/gtkfilesystem.h (struct _GtkFileSystemIface): Added a diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 946835be5f..938775f54f 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,12 @@ +2003-12-07 Murray Cumming + + * gtk/gtktreemodel.c: + (row_inserted_marshal, row_deleted_marshal, rows_reorderered_marshal) + Actually call the default signal handlers instead of calling the + marshallers themselves in an endless loop. These default signal handler + callbacks are not actually set so this is only noticed by gtkmm at + the moment. Bug 123923. + 2003-12-16 Federico Mena Quintero * gtk/gtkfilesystem.h (struct _GtkFileSystemIface): Added a diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 946835be5f..938775f54f 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,12 @@ +2003-12-07 Murray Cumming + + * gtk/gtktreemodel.c: + (row_inserted_marshal, row_deleted_marshal, rows_reorderered_marshal) + Actually call the default signal handlers instead of calling the + marshallers themselves in an endless loop. These default signal handler + callbacks are not actually set so this is only noticed by gtkmm at + the moment. Bug 123923. + 2003-12-16 Federico Mena Quintero * gtk/gtkfilesystem.h (struct _GtkFileSystemIface): Added a diff --git a/gtk/gtktreemodel.c b/gtk/gtktreemodel.c index c84e863a01..96c8c48d4d 100644 --- a/gtk/gtktreemodel.c +++ b/gtk/gtktreemodel.c @@ -206,25 +206,28 @@ row_inserted_marshal (GClosure *closure, gpointer marshal_data) { GtkTreeModelIface *iface; - gpointer callback; + + void (* row_inserted_callback) (GtkTreeModel *tree_model, + GtkTreePath *path, + GtkTreeIter *iter) = 0; + GObject *model = g_value_get_object (param_values + 0); + GtkTreePath *path = (GtkTreePath *)g_value_get_boxed (param_values + 1); + GtkTreeIter *iter = (GtkTreeIter *)g_value_get_boxed (param_values + 2); /* first, we need to update internal row references */ gtk_tree_row_ref_inserted ((RowRefList *)g_object_get_data (model, ROW_REF_DATA_STRING), - (GtkTreePath *)g_value_get_boxed (param_values + 1), - (GtkTreeIter *)g_value_get_boxed (param_values + 2)); - + path, iter); + /* fetch the interface ->row_inserted implementation */ iface = GTK_TREE_MODEL_GET_IFACE (model); - callback = G_STRUCT_MEMBER (gpointer, iface, + row_inserted_callback = G_STRUCT_MEMBER (gpointer, iface, G_STRUCT_OFFSET (GtkTreeModelIface, row_inserted)); - if (callback) - closure->marshal (closure, - return_value, - n_param_values, param_values, - invocation_hint, - callback); + + /* Call that default signal handler, it if has been set */ + if (row_inserted_callback) + row_inserted_callback (GTK_TREE_MODEL (model), path, iter); } static void @@ -236,24 +239,25 @@ row_deleted_marshal (GClosure *closure, gpointer marshal_data) { GtkTreeModelIface *iface; - gpointer callback; + void (* row_deleted_callback) (GtkTreeModel *tree_model, + GtkTreePath *path) = 0; GObject *model = g_value_get_object (param_values + 0); + GtkTreePath *path = (GtkTreePath *)g_value_get_boxed (param_values + 1); + /* first, we need to update internal row references */ gtk_tree_row_ref_deleted ((RowRefList *)g_object_get_data (model, ROW_REF_DATA_STRING), - (GtkTreePath *)g_value_get_boxed (param_values + 1)); + path); - /* emit signal */ + /* fetch the interface ->row_deleted implementation */ iface = GTK_TREE_MODEL_GET_IFACE (model); - callback = G_STRUCT_MEMBER (gpointer, iface, + row_deleted_callback = G_STRUCT_MEMBER (gpointer, iface, G_STRUCT_OFFSET (GtkTreeModelIface, row_deleted)); - if (callback) - closure->marshal (closure, - return_value, - n_param_values, param_values, - invocation_hint, - callback); + + /* Call that default signal handler, it if has been set */ + if (row_deleted_callback) + row_deleted_callback (GTK_TREE_MODEL (model), path); } static void @@ -265,26 +269,29 @@ rows_reordered_marshal (GClosure *closure, gpointer marshal_data) { GtkTreeModelIface *iface; - gpointer callback; + void (* rows_reordered_callback) (GtkTreeModel *tree_model, + GtkTreePath *path, + GtkTreeIter *iter, + gint *new_order); + GObject *model = g_value_get_object (param_values + 0); - + GtkTreePath *path = (GtkTreePath *)g_value_get_boxed (param_values + 1); + GtkTreeIter *iter = (GtkTreeIter *)g_value_get_boxed (param_values + 2); + gint *new_order = (gint *)g_value_get_pointer (param_values + 3); + /* first, we need to update internal row references */ gtk_tree_row_ref_reordered ((RowRefList *)g_object_get_data (model, ROW_REF_DATA_STRING), - (GtkTreePath *)g_value_get_boxed (param_values + 1), - (GtkTreeIter *)g_value_get_boxed (param_values + 2), - (gint *)g_value_get_pointer (param_values + 3)); + path, iter, new_order); - /* emit signal */ + /* fetch the interface ->rows_reordered implementation */ iface = GTK_TREE_MODEL_GET_IFACE (model); - callback = G_STRUCT_MEMBER (gpointer, iface, + rows_reordered_callback = G_STRUCT_MEMBER (gpointer, iface, G_STRUCT_OFFSET (GtkTreeModelIface, rows_reordered)); - if (callback) - closure->marshal (closure, - return_value, - n_param_values, param_values, - invocation_hint, - callback); + + /* Call that default signal handler, it if has been set */ + if (rows_reordered_callback) + rows_reordered_callback (GTK_TREE_MODEL (model), path, iter, new_order); } /**