[gedit/wip/loader-saver] tab: take "create backup" gsetting into account



commit 88f9235bcb8683bba7b84ef93afdf439fe041b35
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Mon Jun 30 16:03:12 2014 +0200

    tab: take "create backup" gsetting into account

 gedit/gedit-tab.c |   46 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 35 insertions(+), 11 deletions(-)
---
diff --git a/gedit/gedit-tab.c b/gedit/gedit-tab.c
index 6ff7be3..148ddbe 100644
--- a/gedit/gedit-tab.c
+++ b/gedit/gedit-tab.c
@@ -2246,13 +2246,40 @@ save (GeditTab *tab)
                                          tab);
 }
 
+static GtkSourceFileSaverFlags
+get_save_flags (GeditTab *tab,
+               gboolean  auto_save)
+{
+       GtkSourceFileSaverFlags save_flags;
+       gboolean create_backup;
+
+       save_flags = tab->priv->save_flags;
+
+       create_backup = g_settings_get_boolean (tab->priv->editor,
+                                               GEDIT_SETTINGS_CREATE_BACKUP_COPY);
+
+       /* In case of autosaving, we need to preserve the backup that was produced
+        * the last time the user "manually" saved the file. So we don't set the
+        * CREATE_BACKUP flag for an automatic file saving.
+        * TODO (swilmet) In the case a recoverable error happens while saving,
+        * set the CREATE_BACKUP flag since the user expressed his willing of
+        * saving the file.
+        */
+       if (create_backup && !auto_save)
+       {
+               save_flags |= GTK_SOURCE_FILE_SAVER_FLAGS_CREATE_BACKUP;
+       }
+
+       return save_flags;
+}
+
 void
 _gedit_tab_save (GeditTab *tab)
 {
        GeditDocument *doc;
        GtkSourceFile *file;
        GFile *location;
-       GtkSourceFileSaverFlags save_flags = tab->priv->save_flags;
+       GtkSourceFileSaverFlags save_flags;
 
        g_return_if_fail (GEDIT_IS_TAB (tab));
        g_return_if_fail (tab->priv->state == GEDIT_TAB_STATE_NORMAL ||
@@ -2262,6 +2289,8 @@ _gedit_tab_save (GeditTab *tab)
        doc = gedit_tab_get_document (tab);
        g_return_if_fail (!gedit_document_is_untitled (doc));
 
+       save_flags = get_save_flags (tab, FALSE);
+
        if (tab->priv->state == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION)
        {
                /* We already told the user about the external modification:
@@ -2292,6 +2321,7 @@ gedit_tab_auto_save (GeditTab *tab)
        GeditDocument *doc;
        GtkSourceFile *file;
        GFile *location;
+       GtkSourceFileSaverFlags save_flags;
 
        gedit_debug (DEBUG_TAB);
 
@@ -2333,15 +2363,8 @@ gedit_tab_auto_save (GeditTab *tab)
 
        tab->priv->saver = gtk_source_file_saver_new (file, location);
 
-       /* Since we are autosaving, we need to preserve the backup that was produced
-        * the last time the user "manually" saved the file. So we don't set the
-        * CREATE_BACKUP flag for an automatic file saving.
-        * TODO (swilmet) In the case a recoverable error happens while saving,
-        * set the CREATE_BACKUP flag since the user expressed his willing of
-        * saving the file.
-        */
-       gtk_source_file_saver_set_flags (tab->priv->saver,
-                                        tab->priv->save_flags);
+       save_flags = get_save_flags (tab, TRUE);
+       gtk_source_file_saver_set_flags (tab->priv->saver, save_flags);
 
        save (tab);
 
@@ -2371,7 +2394,8 @@ _gedit_tab_save_as (GeditTab                 *tab,
 
        /* reset the save flags, when saving as */
        tab->priv->save_flags = GTK_SOURCE_FILE_SAVER_FLAGS_NONE;
-       save_flags = tab->priv->save_flags;
+
+       save_flags = get_save_flags (tab, FALSE);
 
        if (tab->priv->state == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION)
        {


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