[epiphany] Use GtkFileChooserNative for bookmark import/export



commit ef1b25f3b09d2bf0d04376612762a64b9a4b00b3
Author: Adrian Perez de Castro <aperez igalia com>
Date:   Thu Mar 23 20:02:14 2017 +0200

    Use GtkFileChooserNative for bookmark import/export
    
    The bookmark import/export file choosers went unnoticed when converting the
    other dialogs to GtkFileChooserNative. This patch converts those as well.
    
    Fixes bug #780468

 src/window-commands.c |   78 ++++++++++++++++++++-----------------------------
 1 files changed, 32 insertions(+), 46 deletions(-)
---
diff --git a/src/window-commands.c b/src/window-commands.c
index 073c12e..cd5fc70 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -274,7 +274,7 @@ dialog_bookmarks_import_cb (GtkDialog   *dialog,
                             GtkComboBox *combo_box)
 {
   EphyBookmarksManager *manager = ephy_shell_get_bookmarks_manager (ephy_shell_get_default ());
-  GtkWidget *file_chooser_dialog;
+  GtkFileChooser *file_chooser_dialog;
   GtkWidget *import_info_dialog;
   int active;
   int chooser_response;
@@ -285,32 +285,25 @@ dialog_bookmarks_import_cb (GtkDialog   *dialog,
     if (active == 0) {
       GtkFileFilter *filter;
 
+      file_chooser_dialog = GTK_FILE_CHOOSER (gtk_file_chooser_native_new (_("Choose File"),
+                                                                           GTK_WINDOW (dialog),
+                                                                           GTK_FILE_CHOOSER_ACTION_OPEN,
+                                                                           _("I_mport"),
+                                                                           _("_Cancel")));
+      gtk_file_chooser_set_show_hidden (file_chooser_dialog, TRUE);
+
       filter = gtk_file_filter_new ();
       gtk_file_filter_add_pattern (filter, "*.gvdb");
+      gtk_file_chooser_set_filter (file_chooser_dialog, filter);
 
-      file_chooser_dialog = g_object_new (GTK_TYPE_FILE_CHOOSER_DIALOG,
-                                          "action", GTK_FILE_CHOOSER_ACTION_OPEN,
-                                          "filter", filter,
-                                          "modal", TRUE,
-                                          "show-hidden", TRUE,
-                                          "transient-for", dialog,
-                                          "title", _("Choose File"),
-                                          NULL);
-
-      gtk_dialog_add_buttons (GTK_DIALOG (file_chooser_dialog),
-                              _("_Cancel"), GTK_RESPONSE_CANCEL,
-                              _("I_mport"), GTK_RESPONSE_OK,
-                              NULL);
-      gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-
-      chooser_response = gtk_dialog_run (GTK_DIALOG (file_chooser_dialog));
-      if (chooser_response == GTK_RESPONSE_OK) {
+      chooser_response = gtk_native_dialog_run (GTK_NATIVE_DIALOG (file_chooser_dialog));
+      if (chooser_response == GTK_RESPONSE_ACCEPT) {
         GError *error = NULL;
         char *filename;
 
-        gtk_widget_hide (file_chooser_dialog);
+        gtk_native_dialog_hide (GTK_NATIVE_DIALOG (file_chooser_dialog));
 
-        filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser_dialog));
+        filename = gtk_file_chooser_get_filename (file_chooser_dialog);
         imported = ephy_bookmarks_import (manager, filename, &error);
         g_free (filename);
 
@@ -325,7 +318,7 @@ dialog_bookmarks_import_cb (GtkDialog   *dialog,
 
         gtk_widget_destroy (import_info_dialog);
       }
-      gtk_widget_destroy (file_chooser_dialog);
+      g_object_unref (file_chooser_dialog);
     } else if (active == 1) {
       GError *error = NULL;
       GSList *profiles;
@@ -442,45 +435,38 @@ window_cmd_export_bookmarks (GSimpleAction *action,
                              gpointer       user_data)
 {
   EphyBookmarksManager *manager = ephy_shell_get_bookmarks_manager (ephy_shell_get_default ());
-  GtkWidget *dialog;
+  GtkFileChooser *dialog;
   GtkWidget *export_info_dialog;
   int chooser_response;
   gboolean exported;
   GtkFileFilter *filter;
 
-  filter = gtk_file_filter_new ();
-  gtk_file_filter_add_pattern (filter, "*.gvdb");
-
-  dialog = g_object_new (GTK_TYPE_FILE_CHOOSER_DIALOG,
-                         "action", GTK_FILE_CHOOSER_ACTION_SAVE,
-                         "filter", filter,
-                         "modal", TRUE,
-                         "show-hidden", TRUE,
-                         "transient-for", user_data,
-                         "title", _("Choose File"),
-                         NULL);
-
-  gtk_dialog_add_buttons (GTK_DIALOG (dialog),
-                          _("_Cancel"), GTK_RESPONSE_CANCEL,
-                          _("_Save"), GTK_RESPONSE_OK,
-                          NULL);
-  gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+  dialog = GTK_FILE_CHOOSER (gtk_file_chooser_native_new (_("Choose File"),
+                                                          GTK_WINDOW (user_data),
+                                                          GTK_FILE_CHOOSER_ACTION_SAVE,
+                                                          _("_Save"),
+                                                          _("_Cancel")));
+  gtk_file_chooser_set_show_hidden (dialog, TRUE);
 
   /* Translators: Only translate the part before ".gvdb" (e.g. "bookmarks") */
-  gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), _("bookmarks.gvdb"));
+  gtk_file_chooser_set_current_name (dialog, _("bookmarks.gvdb"));
 
-  chooser_response = gtk_dialog_run (GTK_DIALOG (dialog));
-  if (chooser_response == GTK_RESPONSE_OK) {
+  filter = gtk_file_filter_new ();
+  gtk_file_filter_add_pattern (filter, "*.gvdb");
+  gtk_file_chooser_set_filter (dialog, filter);
+
+  chooser_response = gtk_native_dialog_run (GTK_NATIVE_DIALOG (dialog));
+  if (chooser_response == GTK_RESPONSE_ACCEPT) {
     GError *error = NULL;
     char *filename;
 
-    gtk_widget_hide (dialog);
+    gtk_native_dialog_hide (GTK_NATIVE_DIALOG (dialog));
 
-    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+    filename = gtk_file_chooser_get_filename (dialog);
     exported = ephy_bookmarks_export (manager, filename, &error);
     g_free (filename);
 
-    export_info_dialog = gtk_message_dialog_new (GTK_WINDOW (dialog),
+    export_info_dialog = gtk_message_dialog_new (GTK_WINDOW (user_data),
                                                  GTK_DIALOG_MODAL,
                                                  exported ? GTK_MESSAGE_INFO : GTK_MESSAGE_WARNING,
                                                  GTK_BUTTONS_OK,
@@ -491,7 +477,7 @@ window_cmd_export_bookmarks (GSimpleAction *action,
     gtk_widget_destroy (export_info_dialog);
   }
 
-  gtk_widget_destroy (dialog);
+  g_object_unref (dialog);
 }
 
 void


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