[accounts-dialog] Prevent self-destruction



commit 7f531f46b6f08e19c2c55fb6e2e163a53721b528
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Jan 21 00:38:44 2010 -0500

    Prevent self-destruction

 src/main.c |   45 +++++++++++++++++++++++++++++++--------------
 1 files changed, 31 insertions(+), 14 deletions(-)
---
diff --git a/src/main.c b/src/main.c
index 668b508..4983f4c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -614,9 +614,21 @@ update_add_button (GObject           *source,
             !gtk_widget_is_sensitive (get_widget (d, "delete-user-button"))) {
                 gtk_widget_hide (get_widget (d, "add-delete-buttonbox"));
         }
-	else {
-        	gtk_widget_show (get_widget (d, "add-delete-buttonbox"));
-	}
+        else {
+                gtk_widget_show (get_widget (d, "add-delete-buttonbox"));
+        }
+}
+
+static void
+prevent_selfdestruction (UserAccountDialog *d)
+{
+        UmUser *user;
+
+        user = get_selected_user (d);
+
+        if (user && um_user_get_uid (user) == getuid ()) {
+                gtk_widget_set_sensitive (get_widget (d, "delete-user-button"), FALSE);
+        }
 }
 
 static void
@@ -654,9 +666,13 @@ update_delete_button (GObject           *source,
             !gtk_widget_is_sensitive (get_widget (d, "delete-user-button"))) {
                 gtk_widget_hide (get_widget (d, "add-delete-buttonbox"));
         }
-	else {
-        	gtk_widget_show (get_widget (d, "add-delete-buttonbox"));
-	}
+        else {
+                gtk_widget_show (get_widget (d, "add-delete-buttonbox"));
+        }
+
+        if (is_authorized) {
+                prevent_selfdestruction (d);
+        }
 }
 
 static void
@@ -688,16 +704,16 @@ update_create_buttons (UserAccountDialog *d)
 
 static void
 authorizations_changed (PolkitAuthority *authority,
-			gpointer         data)
+                        gpointer         data)
 {
-	UserAccountDialog *d = data;
+        UserAccountDialog *d = data;
         UmUser *user;
 
-	update_create_buttons (d);
+        update_create_buttons (d);
         user = get_selected_user (d);
-	if (user) {
-		update_change_buttons (d, user);
-	}
+        if (user) {
+                update_change_buttons (d, user);
+        }
 }
 
 static void
@@ -714,6 +730,7 @@ selected_user_changed (GtkTreeSelection *selection, UserAccountDialog *d)
 
                 widget = get_widget (d, "login-options-button");
                 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
+                update_create_buttons (d);
                 update_change_buttons (d, user);
 
                 g_object_unref (user);
@@ -1145,8 +1162,8 @@ main (int argc, char *argv[])
         }
 
         d->authority = polkit_authority_get ();
-	g_signal_connect (d->authority, "changed",
-			  G_CALLBACK (authorizations_changed), d);
+        g_signal_connect (d->authority, "changed",
+                          G_CALLBACK (authorizations_changed), d);
 
         setup_main_window (d);
         d->login_options = um_login_options_new (d->builder);



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