[gnome-disk-utility] fstab, crypttab dialogs: Don't dismiss dialogs if polkit dialog was dismissed



commit 30a032243f18dd4b1715adc5da4f5e3374188e96
Author: David Zeuthen <davidz redhat com>
Date:   Tue Feb 28 11:11:15 2012 -0500

    fstab, crypttab dialogs: Don't dismiss dialogs if polkit dialog was dismissed
    
    Signed-off-by: David Zeuthen <davidz redhat com>

 src/palimpsest/gducrypttabdialog.c |   21 +++++++++++++++++++--
 src/palimpsest/gdufstabdialog.c    |   21 +++++++++++++++++++--
 2 files changed, 38 insertions(+), 4 deletions(-)
---
diff --git a/src/palimpsest/gducrypttabdialog.c b/src/palimpsest/gducrypttabdialog.c
index 89957ae..df83a93 100644
--- a/src/palimpsest/gducrypttabdialog.c
+++ b/src/palimpsest/gducrypttabdialog.c
@@ -246,6 +246,7 @@ crypttab_dialog_present (CrypttabDialogData *data)
 
   update (data, NULL);
 
+ again:
   response = gtk_dialog_run (GTK_DIALOG (data->dialog));
 
   if (response == GTK_RESPONSE_OK)
@@ -267,6 +268,12 @@ crypttab_dialog_present (CrypttabDialogData *data)
                                                                  NULL, /* GCancellable */
                                                                  &error))
             {
+              if (g_error_matches (error, UDISKS_ERROR, UDISKS_ERROR_NOT_AUTHORIZED_DISMISSED))
+                {
+                  g_error_free (error);
+                  goto again;
+                }
+              gtk_widget_hide (data->dialog);
               gdu_window_show_error (data->window,
                                      _("Error removing /etc/crypttab entry"),
                                      error);
@@ -290,8 +297,6 @@ crypttab_dialog_present (CrypttabDialogData *data)
           ui_options = gtk_entry_get_text (GTK_ENTRY (data->options_entry));
           ui_passphrase_contents = gtk_entry_get_text (GTK_ENTRY (data->passphrase_entry));
 
-          gtk_widget_hide (data->dialog);
-
           old_passphrase_path = NULL;
           if (data->orig_crypttab_entry != NULL)
             {
@@ -348,6 +353,12 @@ crypttab_dialog_present (CrypttabDialogData *data)
                                                                   NULL, /* GCancellable */
                                                                   &error))
                 {
+                  if (g_error_matches (error, UDISKS_ERROR, UDISKS_ERROR_NOT_AUTHORIZED_DISMISSED))
+                    {
+                      g_error_free (error);
+                      goto again;
+                    }
+                  gtk_widget_hide (data->dialog);
                   gdu_window_show_error (data->window,
                                          _("Error adding /etc/crypttab entry"),
                                          error);
@@ -365,6 +376,12 @@ crypttab_dialog_present (CrypttabDialogData *data)
                                                                      NULL, /* GCancellable */
                                                                      &error))
                 {
+                  if (g_error_matches (error, UDISKS_ERROR, UDISKS_ERROR_NOT_AUTHORIZED_DISMISSED))
+                    {
+                      g_error_free (error);
+                      goto again;
+                    }
+                  gtk_widget_hide (data->dialog);
                   gdu_window_show_error (data->window,
                                          _("Error updating /etc/crypttab entry"),
                                          error);
diff --git a/src/palimpsest/gdufstabdialog.c b/src/palimpsest/gdufstabdialog.c
index dfde2b5..a24201d 100644
--- a/src/palimpsest/gdufstabdialog.c
+++ b/src/palimpsest/gdufstabdialog.c
@@ -504,6 +504,7 @@ gdu_fstab_dialog_show (GduWindow    *window,
   g_signal_connect (data.icon_entry,
                     "notify::text", G_CALLBACK (on_property_changed), &data);
 
+ again:
   response = gtk_dialog_run (GTK_DIALOG (dialog));
   if (response == GTK_RESPONSE_OK)
     {
@@ -521,6 +522,12 @@ gdu_fstab_dialog_show (GduWindow    *window,
                                                                  NULL, /* GCancellable */
                                                                  &error))
             {
+              if (g_error_matches (error, UDISKS_ERROR, UDISKS_ERROR_NOT_AUTHORIZED_DISMISSED))
+                {
+                  g_error_free (error);
+                  goto again;
+                }
+              gtk_widget_hide (dialog);
               gdu_window_show_error (window,
                                      _("Error removing old /etc/fstab entry"),
                                      error);
@@ -550,8 +557,6 @@ gdu_fstab_dialog_show (GduWindow    *window,
               g_variant_lookup (data.orig_fstab_entry, "passno", "i", &passno);
             }
 
-          gtk_widget_hide (dialog);
-
           if (data.orig_fstab_entry != NULL)
             old_item = g_variant_new ("(s a{sv})", "fstab", data.orig_fstab_entry);
 
@@ -573,6 +578,12 @@ gdu_fstab_dialog_show (GduWindow    *window,
                                                                   NULL, /* GCancellable */
                                                                   &error))
                 {
+                  if (g_error_matches (error, UDISKS_ERROR, UDISKS_ERROR_NOT_AUTHORIZED_DISMISSED))
+                    {
+                      g_error_free (error);
+                      goto again;
+                    }
+                  gtk_widget_hide (dialog);
                   gdu_window_show_error (window,
                                          _("Error adding new /etc/fstab entry"),
                                          error);
@@ -591,6 +602,12 @@ gdu_fstab_dialog_show (GduWindow    *window,
                                                                      NULL, /* GCancellable */
                                                                      &error))
                 {
+                  if (g_error_matches (error, UDISKS_ERROR, UDISKS_ERROR_NOT_AUTHORIZED_DISMISSED))
+                    {
+                      g_error_free (error);
+                      goto again;
+                    }
+                  gtk_widget_hide (dialog);
                   gdu_window_show_error (window,
                                          _("Error updating /etc/fstab entry"),
                                          error);



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