[gnome-system-tools] Fix groups model



commit 91efbabfe9ef59547f846cfe37c9c697189c4c9c
Author: Milan Bouchet-Valat <nalimilan club fr>
Date:   Tue Jan 5 16:52:24 2010 +0100

    Fix groups model
    
    Now that the groups list is using a plain GtkTreeModel, table_get_row_references() should'nt call gtk_tree_model_filter_convert_path_to_child_path() on it.

 src/users/callbacks.c |    6 ++----
 src/users/table.c     |   29 ++++++++++++++++++++---------
 2 files changed, 22 insertions(+), 13 deletions(-)
---
diff --git a/src/users/callbacks.c b/src/users/callbacks.c
index f7b5e83..101b293 100644
--- a/src/users/callbacks.c
+++ b/src/users/callbacks.c
@@ -316,7 +316,7 @@ on_group_settings_clicked (GtkButton *button, gpointer user_data)
 	GtkWidget *table, *dialog, *parent_dialog;
 	GtkTreePath *path;
 	GtkTreeModel *model;
-	GtkTreeIter filter_iter, iter;
+	GtkTreeIter iter;
 	OobsGroup *group;
 	gint response;
 
@@ -340,10 +340,8 @@ on_group_settings_clicked (GtkButton *button, gpointer user_data)
 	response = group_settings_dialog_run (dialog, group);
 
 	if (response == GTK_RESPONSE_OK) {
-		gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (model),
-								  &filter_iter, &iter);
 		group_settings_dialog_get_data (group);
-		groups_table_set_group (group, &filter_iter);
+		groups_table_set_group (group, &iter);
 		gst_tool_commit (tool, GST_USERS_TOOL (tool)->groups_config);
 	}
 
diff --git a/src/users/table.c b/src/users/table.c
index c44bc05..000660e 100644
--- a/src/users/table.c
+++ b/src/users/table.c
@@ -227,24 +227,35 @@ GList*
 table_get_row_references (gint table, GtkTreeModel **model)
 {
 	GtkTreeSelection *selection;
-	GtkTreeModel *filter_model;
+	GtkTreeModel *table_model;
 	GtkTreePath *child_path;
 	GList *paths, *elem, *list = NULL;
 
 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (get_table (table)));
-	paths = elem = gtk_tree_selection_get_selected_rows (selection, &filter_model);
-	*model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model));
+	paths = elem = gtk_tree_selection_get_selected_rows (selection, &table_model);
+	if (table == TABLE_USERS)
+		*model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (table_model));
+	else
+		*model = table_model;
 
 	if (!paths)
 		return NULL;
 
-	while (elem) {
-		child_path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (filter_model),
-									       (GtkTreePath *) elem->data);
+	if (table == TABLE_USERS) {
+		while (elem) {
+			child_path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (table_model),
+			                                                               (GtkTreePath *) elem->data);
 
-		list = g_list_prepend (list, gtk_tree_row_reference_new (*model, child_path));
-		gtk_tree_path_free (child_path);
-		elem = elem->next;
+			list = g_list_prepend (list, gtk_tree_row_reference_new (*model, child_path));
+			gtk_tree_path_free (child_path);
+			elem = elem->next;
+		}
+	}
+	else {
+		while (elem) {
+			list = g_list_prepend (list, gtk_tree_row_reference_new (*model, (GtkTreePath *) elem->data));
+			elem = elem->next;
+		}
 	}
 
 	list = g_list_reverse (list);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]