[evince/wip/gpoo/update-save-settings] shell: Save settings automatically at closing a document




commit 135a6eade92ed0845ca068fcd80f16d4128a5a93
Author: Germán Poo-Caamaño <gpoo gnome org>
Date:   Thu Mar 17 16:34:00 2022 -0300

    shell: Save settings automatically at closing a document
    
    Remove 'Save curent settings as default` because it was confusing,
    and a non-standard action in the desktop.
    
    Save exactly the same settings once we know the document will be
    closed, and when there is an actual document opened (e.g. not in
    recent view).
    
    Fixes #1138

 shell/ev-application.c |  1 -
 shell/ev-window.c      | 84 ++++++++++++++++++++++++--------------------------
 shell/evince-menus.ui  |  4 ---
 3 files changed, 41 insertions(+), 48 deletions(-)
---
diff --git a/shell/ev-application.c b/shell/ev-application.c
index bd4d64b07..d4ca0e6e0 100644
--- a/shell/ev-application.c
+++ b/shell/ev-application.c
@@ -951,7 +951,6 @@ ev_application_startup (GApplication *gapplication)
           "win.show-properties",        "<alt>Return", NULL,
           "win.copy",                   "<Ctrl>C", "<Ctrl>Insert", NULL,
           "win.select-all",             "<Ctrl>A", NULL,
-          "win.save-settings",          "<Ctrl>T", NULL,
           "win.add-bookmark",           "<Ctrl>D", NULL,
           "win.delete-bookmark",        "<Ctrl><Shift>D", NULL,
           "win.close",                  "<Ctrl>W", NULL,
diff --git a/shell/ev-window.c b/shell/ev-window.c
index b6ea5285e..9b27fa879 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -570,7 +570,6 @@ ev_window_update_actions_sensitivity (EvWindow *ev_window)
        /* Other actions that must be disabled in recent view, in
         * case they have a shortcut or gesture associated
         */
-       ev_window_set_action_enabled (ev_window, "save-settings", !recent_view_mode);
        ev_window_set_action_enabled (ev_window, "show-side-pane", !recent_view_mode);
        ev_window_set_action_enabled (ev_window, "goto-bookmark", !recent_view_mode);
        ev_window_set_action_enabled (ev_window, "scroll-forward", !recent_view_mode);
@@ -4110,6 +4109,44 @@ ev_window_check_print_queue (EvWindow *ev_window)
        return TRUE;
 }
 
+static void
+ev_window_save_settings (EvWindow *ev_window)
+{
+       EvWindowPrivate *priv = GET_PRIVATE (ev_window);
+       EvView          *ev_view = EV_VIEW (priv->view);
+       EvDocumentModel *model = priv->model;
+       GSettings       *settings = priv->default_settings;
+       EvSizingMode     sizing_mode;
+
+       g_settings_set_boolean (settings, "continuous",
+                               ev_document_model_get_continuous (model));
+       g_settings_set_boolean (settings, "dual-page",
+                               ev_document_model_get_dual_page (model));
+       g_settings_set_boolean (settings, "dual-page-odd-left",
+                               ev_document_model_get_dual_page_odd_pages_left (model));
+       g_settings_set_boolean (settings, "fullscreen",
+                               ev_document_model_get_fullscreen (model));
+       g_settings_set_boolean (settings, "inverted-colors",
+                               ev_document_model_get_inverted_colors (model));
+       sizing_mode = ev_document_model_get_sizing_mode (model);
+       g_settings_set_enum (settings, "sizing-mode", sizing_mode);
+       if (sizing_mode == EV_SIZING_FREE) {
+               gdouble zoom = ev_document_model_get_scale (model);
+
+               zoom *= 72.0 / ev_document_misc_get_widget_dpi (GTK_WIDGET (ev_window));
+               g_settings_set_double (settings, "zoom", zoom);
+       }
+       g_settings_set_boolean (settings, "show-sidebar",
+                               gtk_widget_get_visible (priv->sidebar));
+       g_settings_set_int (settings, "sidebar-size",
+                           gtk_paned_get_position (GTK_PANED (priv->hpaned)));
+       g_settings_set_string (settings, "sidebar-page",
+                              ev_window_sidebar_get_current_page_id (ev_window));
+       g_settings_set_boolean (settings, "enable-spellchecking",
+                               ev_view_get_enable_spellchecking (ev_view));
+       g_settings_apply (settings);
+}
+
 static gboolean
 ev_window_close (EvWindow *ev_window)
 {
@@ -4130,6 +4167,9 @@ ev_window_close (EvWindow *ev_window)
        if (ev_window_check_print_queue (ev_window))
                return FALSE;
 
+       if (!ev_window_is_recent_view (ev_window))
+               ev_window_save_settings (ev_window);
+
        return TRUE;
 }
 
@@ -4930,47 +4970,6 @@ ev_window_cmd_view_enable_spellchecking (GSimpleAction *action,
        g_simple_action_set_state (action, state);
 }
 
-static void
-ev_window_cmd_edit_save_settings (GSimpleAction *action,
-                                 GVariant      *state,
-                                 gpointer       user_data)
-{
-       EvWindow        *ev_window = user_data;
-       EvWindowPrivate *priv = GET_PRIVATE (ev_window);
-       EvView          *ev_view = EV_VIEW (priv->view);
-       EvDocumentModel *model = priv->model;
-       GSettings       *settings = priv->default_settings;
-       EvSizingMode     sizing_mode;
-
-       g_settings_set_boolean (settings, "continuous",
-                               ev_document_model_get_continuous (model));
-       g_settings_set_boolean (settings, "dual-page",
-                               ev_document_model_get_dual_page (model));
-       g_settings_set_boolean (settings, "dual-page-odd-left",
-                               ev_document_model_get_dual_page_odd_pages_left (model));
-       g_settings_set_boolean (settings, "fullscreen",
-                               ev_document_model_get_fullscreen (model));
-       g_settings_set_boolean (settings, "inverted-colors",
-                               ev_document_model_get_inverted_colors (model));
-       sizing_mode = ev_document_model_get_sizing_mode (model);
-       g_settings_set_enum (settings, "sizing-mode", sizing_mode);
-       if (sizing_mode == EV_SIZING_FREE) {
-               gdouble zoom = ev_document_model_get_scale (model);
-
-               zoom *= 72.0 / ev_document_misc_get_widget_dpi (GTK_WIDGET (ev_window));
-               g_settings_set_double (settings, "zoom", zoom);
-       }
-       g_settings_set_boolean (settings, "show-sidebar",
-                               gtk_widget_get_visible (priv->sidebar));
-       g_settings_set_int (settings, "sidebar-size",
-                           gtk_paned_get_position (GTK_PANED (priv->hpaned)));
-       g_settings_set_string (settings, "sidebar-page",
-                              ev_window_sidebar_get_current_page_id (ev_window));
-       g_settings_set_boolean (settings, "enable-spellchecking",
-                               ev_view_get_enable_spellchecking (ev_view));
-       g_settings_apply (settings);
-}
-
 static void
 ev_window_cmd_view_zoom_in (GSimpleAction *action,
                            GVariant      *parameter,
@@ -6382,7 +6381,6 @@ static const GActionEntry actions[] = {
        { "show-properties", ev_window_cmd_file_properties },
        { "copy", ev_window_cmd_edit_copy },
        { "select-all", ev_window_cmd_edit_select_all },
-       { "save-settings", ev_window_cmd_edit_save_settings },
        { "go-previous-page", ev_window_cmd_go_previous_page },
        { "go-next-page", ev_window_cmd_go_next_page },
        { "go-first-page", ev_window_cmd_go_first_page },
diff --git a/shell/evince-menus.ui b/shell/evince-menus.ui
index 35b8c28f4..c51b4916f 100644
--- a/shell/evince-menus.ui
+++ b/shell/evince-menus.ui
@@ -102,10 +102,6 @@
       </item>
     </section>
     <section>
-      <item>
-        <attribute name="label" translatable="yes">Save Current Settings as Defa_ult</attribute>
-        <attribute name="action">win.save-settings</attribute>
-      </item>
       <item>
         <attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
         <attribute name="action">win.show-help-overlay</attribute>


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