1
0
mirror of https://gitlab.gnome.org/GNOME/evince synced 2024-07-05 00:59:07 +00:00

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
This commit is contained in:
Germán Poo-Caamaño 2022-03-17 16:34:00 -03:00
parent 4e56a2d63a
commit 64ef4464fd
4 changed files with 41 additions and 55 deletions

View File

@ -956,7 +956,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,

View File

@ -569,7 +569,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, "scroll-forward", !recent_view_mode);
ev_window_set_action_enabled (ev_window, "scroll-backwards", !recent_view_mode);
@ -4104,6 +4103,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)
{
@ -4129,6 +4166,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;
}
@ -4977,47 +5017,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,
@ -6313,7 +6312,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 },

View File

@ -203,10 +203,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>

View File

@ -403,13 +403,6 @@
<property name="action-name">win.close</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Save current settings as default</property>
<property name="action-name">win.save-settings</property>
</object>
</child>
</object>
</child>
<child>