[gnome-system-tools] Improve users deletion



commit dc4c92e1a08151f9ab151e26b554a9524911fd54
Author: Milan Bouchet-Valat <nalimilan club fr>
Date:   Mon Jan 25 19:33:16 2010 +0100

    Improve users deletion
    
    When deleting an user, require authentication before prompting anything. Always have the Delete button sensitive.
    
    Select first user in the list to avoid ending without any user selected at all. Don't assert that an user is selected, since we sometimes simply check that it's the case.

 interfaces/users.ui       |    5 ++---
 src/users/user-settings.c |    7 +++++++
 src/users/users-table.c   |    3 ++-
 3 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/interfaces/users.ui b/interfaces/users.ui
index e202553..9f5b95d 100644
--- a/interfaces/users.ui
+++ b/interfaces/users.ui
@@ -126,7 +126,6 @@
                   <object class="GtkButton" id="user_delete">
                     <property name="label">gtk-delete</property>
                     <property name="visible">True</property>
-                    <property name="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="can_default">True</property>
                     <property name="receives_default">True</property>
@@ -3204,9 +3203,9 @@
   <object class="GtkSizeGroup" id="user_new_notice_sizegroup">
     <property name="mode">both</property>
     <widgets>
-      <widget name="user_new_login_letter_notice"/>
-      <widget name="user_new_login_used_notice"/>
       <widget name="user_new_login_notice"/>
+      <widget name="user_new_login_used_notice"/>
+      <widget name="user_new_login_letter_notice"/>
     </widgets>
   </object>
 </interface>
diff --git a/src/users/user-settings.c b/src/users/user-settings.c
index e7557ea..bce264b 100644
--- a/src/users/user-settings.c
+++ b/src/users/user-settings.c
@@ -180,16 +180,23 @@ on_user_delete_clicked (GtkButton *button, gpointer user_data)
 	GtkTreePath *path;
 	GList *list, *elem;
 
+	/* No need to prompt if not allowed */
+	if (!gst_tool_authenticate (tool, GST_USERS_TOOL (tool)->users_config))
+		return;
+
 	list = elem = table_get_row_references (TABLE_USERS, &model);
 
 	while (elem) {
 		path = gtk_tree_row_reference_get_path (elem->data);
+
 		user_delete (model, path);
 
 		gtk_tree_path_free (path);
 		elem = elem->next;
 	}
 
+	users_table_select_first ();
+
 	g_list_foreach (list, (GFunc) gtk_tree_row_reference_free, NULL);
 	g_list_free (list);
 }
diff --git a/src/users/users-table.c b/src/users/users-table.c
index f5d0540..c067fc8 100644
--- a/src/users/users-table.c
+++ b/src/users/users-table.c
@@ -285,7 +285,8 @@ users_table_get_current (void)
 
 	selected = gtk_tree_selection_get_selected_rows (selection, &model);
 
-	g_return_val_if_fail (selected != NULL, NULL);
+	if (!selected)
+	    return NULL;
 
 	/* Only choose the first selected user */
 	path = (GtkTreePath *) selected->data;



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