diff options
-rw-r--r-- | TODO | 3 | ||||
-rw-r--r-- | src/nautilus-gdu-window.c | 53 |
2 files changed, 40 insertions, 16 deletions
@@ -7,10 +7,11 @@ Short-term: - simple standalone mode - do we need Bootable flag for something? - make a Fedora package + - !! set partition type too !! - handle LUKS encrypted volumes -- monitor device/presentable events like eject, umount etc. +- monitor device/presentable events like eject, umount etc. (try to pull the USB key out and window should disappear) - show custom icon if user has set it in Nautilus - is firmware needed for some devices? - different partition tables? diff --git a/src/nautilus-gdu-window.c b/src/nautilus-gdu-window.c index 660ba80..8177ac6 100644 --- a/src/nautilus-gdu-window.c +++ b/src/nautilus-gdu-window.c @@ -667,15 +667,20 @@ format_action_completed (GduDevice *device, error, _("Error creating partition")); g_error_free (error); - } else if (data->encrypt_passphrase != NULL) { - /* now set the passphrase if requested */ - if (data->save_in_keyring || data->save_in_keyring_session) { - gdu_util_save_secret (device, - data->encrypt_passphrase, - data->save_in_keyring_session); - /* TODO: show encryption info somewhere? */ - update_ui (data->priv); + } + else + { + /* formatting finished */ + if (data->encrypt_passphrase != NULL) { + /* now set the passphrase if requested */ + if (data->save_in_keyring || data->save_in_keyring_session) { + gdu_util_save_secret (device, + data->encrypt_passphrase, + data->save_in_keyring_session); + } } + /* TODO: show encryption info somewhere? */ + update_ui (data->priv); } free_format_action_data (data); } @@ -879,6 +884,25 @@ out: static void +nautilus_gdu_destroy (FormatDialogPrivate *priv) +{ + g_return_if_fail (priv != NULL); +// g_print ("...destroying...\n"); + gtk_widget_destroy (GTK_WIDGET (priv->dialog)); + g_object_unref (priv->presentable); + g_object_unref (priv->pool); + g_free (priv); +} + +static void +presentable_removed (GduPresentable *presentable, FormatDialogPrivate *priv) +{ + g_return_if_fail (priv != NULL); + g_warning ("Presentable removed event.\n"); + nautilus_gdu_destroy (priv); +} + +static void format_dialog_got_response (GtkDialog *dialog, gint response_id, FormatDialogPrivate *priv) @@ -893,11 +917,7 @@ format_dialog_got_response (GtkDialog *dialog, } else { /* destroy the window and unref the presentable */ -// g_print ("...destroying...\n"); - gtk_widget_destroy (GTK_WIDGET (dialog)); - g_object_unref (priv->presentable); - g_object_unref (priv->pool); - g_free (priv); + nautilus_gdu_destroy (priv); } } @@ -1130,14 +1150,17 @@ nautilus_gdu_spawn_dialog (GduPresentable *presentable) // gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_OK, FALSE); - /* update sensivity and length of fs label + entry */ + /* update sensivity and length of fs label + entry */ g_signal_connect (priv->part_type_combo_box, "changed", G_CALLBACK (type_combo_box_changed), priv); g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (format_dialog_got_response), priv); + /* catch Presentable events */ + g_signal_connect (G_OBJECT (priv->presentable), "removed", + G_CALLBACK (presentable_removed), priv); + gtk_widget_show_all (GTK_WIDGET (dialog)); gtk_widget_grab_focus (priv->close_button); - update_ui (priv); update_ui_progress (priv, NULL, FALSE); } |