[gnome-system-tools] Fix handling of GtkTreeModel references
- From: Milan Bouchet-Valat <milanbv src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-system-tools] Fix handling of GtkTreeModel references
- Date: Sat, 6 Feb 2010 12:01:14 +0000 (UTC)
commit 237e7469dcc4e379f58c82c90b6fe7748fdc70eb
Author: Milan Bouchet-Valat <nalimilan club fr>
Date: Sat Feb 6 12:44:20 2010 +0100
Fix handling of GtkTreeModel references
A few mistakes when getting the model had broken users and groups deletion (introduced by 2c9725a). group_members_table had not been updated to work with sorting, which is now fixed.
src/users/group-members-table.c | 19 ++++++++++++-------
src/users/groups-table.c | 3 ++-
src/users/users-table.c | 3 ++-
3 files changed, 16 insertions(+), 9 deletions(-)
---
diff --git a/src/users/group-members-table.c b/src/users/group-members-table.c
index 5dc238b..69b35ac 100644
--- a/src/users/group-members-table.c
+++ b/src/users/group-members-table.c
@@ -41,17 +41,20 @@ get_model (void)
static void
on_group_member_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
{
- GtkTreeModel *model, *filter_model;
- GtkTreePath *filter_path, *path;
+ GtkTreeModel *model, *sort_model, *filter_model;
+ GtkTreePath *sort_path, *filter_path, *path;
GtkTreeIter iter;
gboolean value;
- filter_model = (GtkTreeModel*) data;
+ sort_model = (GtkTreeModel*) data;
+ filter_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model));
model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model));
- filter_path = gtk_tree_path_new_from_string (path_str);
+ sort_path = gtk_tree_path_new_from_string (path_str);
+ filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (sort_model),
+ sort_path);
path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (filter_model),
- filter_path);
+ filter_path);
if (gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &iter, path)) {
gtk_tree_model_get (model, &iter, COL_USER_MEMBER, &value, -1);
@@ -60,6 +63,7 @@ on_group_member_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer
-1);
}
+ gtk_tree_path_free (sort_path);
gtk_tree_path_free (filter_path);
gtk_tree_path_free (path);
}
@@ -122,14 +126,15 @@ void
group_members_table_set_from_group (OobsGroup *group)
{
GtkWidget *table;
- GtkTreeModel *filter_model, *model;
+ GtkTreeModel *sort_model, *filter_model, *model;
GtkTreeIter iter;
GList *users;
gboolean valid;
OobsUser *user;
table = gst_dialog_get_widget (GST_TOOL (tool)->main_dialog, "group_settings_members");
- filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (table));
+ sort_model = gtk_tree_view_get_model (GTK_TREE_VIEW (table));
+ filter_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model));
model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model));
users = oobs_group_get_users (group);
diff --git a/src/users/groups-table.c b/src/users/groups-table.c
index efb6542..d48979b 100644
--- a/src/users/groups-table.c
+++ b/src/users/groups-table.c
@@ -167,9 +167,10 @@ groups_table_get_row_references ()
groups_table = gst_dialog_get_widget (GST_TOOL (tool)->main_dialog, "groups_table");
sort_model = gtk_tree_view_get_model (GTK_TREE_VIEW (groups_table));
+ model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model));
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (groups_table));
- paths = elem = gtk_tree_selection_get_selected_rows (selection, &model);
+ paths = elem = gtk_tree_selection_get_selected_rows (selection, NULL);
if (!paths)
return NULL;
diff --git a/src/users/users-table.c b/src/users/users-table.c
index 71fa6d6..df41cad 100644
--- a/src/users/users-table.c
+++ b/src/users/users-table.c
@@ -248,9 +248,10 @@ users_table_get_row_references ()
users_table = gst_dialog_get_widget (GST_TOOL (tool)->main_dialog, "users_table");
sort_model = gtk_tree_view_get_model (GTK_TREE_VIEW (users_table));
filter_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model));
+ model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model));
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (users_table));
- paths = elem = gtk_tree_selection_get_selected_rows (selection, &model);
+ paths = elem = gtk_tree_selection_get_selected_rows (selection, NULL);
if (!paths)
return NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]