[gedit/wip/loader-saver] tab: take "create backup" gsetting into account
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/wip/loader-saver] tab: take "create backup" gsetting into account
- Date: Mon, 30 Jun 2014 14:04:36 +0000 (UTC)
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]