diff --git a/Versions/build.txt b/Versions/build.txt
index bc63daa53..45c4a6b22 100644
--- a/Versions/build.txt
+++ b/Versions/build.txt
@@ -1 +1 @@
-2598
+2599
diff --git a/language/common_res.h b/language/common_res.h
index 466578b87..6bee111b0 100644
--- a/language/common_res.h
+++ b/language/common_res.h
@@ -444,6 +444,7 @@
#define IDM_FILE_MANAGEFAV 40020
#define IDM_FILE_RECENT 40021
#define IDM_FILE_EXIT 40022
+#define IDM_FILE_PRESERVE_FILEMODTIME 40023
#define IDM_ENCODING_ANSI 40100
#define IDM_ENCODING_UNICODE 40101
diff --git a/language/np3_de_de/menu_de_de.rc b/language/np3_de_de/menu_de_de.rc
index d6326f9fb..b33b11217 100644
--- a/language/np3_de_de/menu_de_de.rc
+++ b/language/np3_de_de/menu_de_de.rc
@@ -64,6 +64,8 @@ BEGIN
MENUITEM "&Kopie speichern...\tCtrl+F6", IDM_FILE_SAVECOPY
MENUITEM "&Nur lesend", IDM_FILE_READONLY
MENUITEM SEPARATOR
+ MENUITEM "Keine Anpassung des &Zeitstempels", IDM_FILE_PRESERVE_FILEMODTIME
+ MENUITEM SEPARATOR
MENUITEM "&Verschlüsselungs Passwort...", IDM_SETPASS
MENUITEM SEPARATOR
POPUP "&Starte"
diff --git a/language/np3_en_gb/menu_en_gb.rc b/language/np3_en_gb/menu_en_gb.rc
index 05ab94070..eab9d2843 100644
--- a/language/np3_en_gb/menu_en_gb.rc
+++ b/language/np3_en_gb/menu_en_gb.rc
@@ -64,6 +64,8 @@ BEGIN
MENUITEM "Save &Copy...\tCtrl+F6", IDM_FILE_SAVECOPY
MENUITEM "&Read Only", IDM_FILE_READONLY
MENUITEM SEPARATOR
+ MENUITEM "&Preserve File Modification Time", IDM_FILE_PRESERVE_FILEMODTIME
+ MENUITEM SEPARATOR
MENUITEM "Set Encr&yption Passphrase...", IDM_SETPASS
MENUITEM SEPARATOR
POPUP "&Launch"
diff --git a/language/np3_en_us/menu_en_us.rc b/language/np3_en_us/menu_en_us.rc
index 11a7cb1f6..1e113d121 100644
--- a/language/np3_en_us/menu_en_us.rc
+++ b/language/np3_en_us/menu_en_us.rc
@@ -64,6 +64,8 @@ BEGIN
MENUITEM "Save &Copy...\tCtrl+F6", IDM_FILE_SAVECOPY
MENUITEM "&Read Only", IDM_FILE_READONLY
MENUITEM SEPARATOR
+ MENUITEM "&Preserve File Modification Time", IDM_FILE_PRESERVE_FILEMODTIME
+ MENUITEM SEPARATOR
MENUITEM "Set Encr&yption Passphrase...", IDM_SETPASS
MENUITEM SEPARATOR
POPUP "&Launch"
diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf
index e632dc147..dbb9431b9 100644
--- a/res/Notepad3.exe.manifest.conf
+++ b/res/Notepad3.exe.manifest.conf
@@ -3,7 +3,7 @@
Notepad3 BETA
diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp
index 700089ff8..8c06018c3 100644
--- a/src/Config/Config.cpp
+++ b/src/Config/Config.cpp
@@ -913,6 +913,7 @@ void LoadSettings()
GET_INT_VALUE_FROM_INISECTION(Bidirectional, Defaults.Bidirectional, 0, 2); // set before
GET_BOOL_VALUE_FROM_INISECTION(MuteMessageBeep, false);
GET_BOOL_VALUE_FROM_INISECTION(SplitUndoTypingSeqOnLnBreak, false);
+ GET_BOOL_VALUE_FROM_INISECTION(PreserveOrigFileModifyTime, false);
///~Settings2.IMEInteraction = clampi(IniSectionGetInt(Settings_Section, L"IMEInteraction", Settings2.IMEInteraction), SC_IME_WINDOWED, SC_IME_INLINE);
@@ -1383,6 +1384,7 @@ bool SaveSettings(bool bSaveSettingsNow)
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, Bidirectional);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, MuteMessageBeep);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SplitUndoTypingSeqOnLnBreak);
+ SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, PreserveOrigFileModifyTime);
///~IniSectionSetInt(Settings_Section, L"IMEInteraction", Settings2.IMEInteraction);
diff --git a/src/Edit.c b/src/Edit.c
index 45de0edf4..cc1394a8f 100644
--- a/src/Edit.c
+++ b/src/Edit.c
@@ -1356,6 +1356,14 @@ bool EditSaveFile(
if (hFile == INVALID_HANDLE_VALUE)
return false;
+ //FILETIME createTime;
+ //FILETIME laccessTime;
+ FILETIME modTime;
+ //if (!GetFileTime(hFile, &createTime, &laccessTime, &modTime)) {
+ if (!GetFileTime(hFile, NULL, NULL, &modTime)) {
+ return false;
+ }
+
// ensure consistent line endings
if (Settings.FixLineEndings) {
EditEnsureConsistentLineEndings(hwnd);
@@ -1491,6 +1499,9 @@ bool EditSaveFile(
}
}
+ if (Settings.PreserveOrigFileModifyTime) {
+ SetFileTime(hFile, NULL, NULL, &modTime);
+ }
CloseHandle(hFile);
if (bWriteSuccess) {
diff --git a/src/Notepad3.c b/src/Notepad3.c
index 46b4c70eb..e049ac8b9 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -3050,6 +3050,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
EnableCmd(hmenu,IDM_FILE_READONLY,i);
CheckCmd(hmenu,IDM_FILE_READONLY,s_bFileReadOnly);
+ CheckCmd(hmenu,IDM_FILE_PRESERVE_FILEMODTIME, Settings.PreserveOrigFileModifyTime);
EnableCmd(hmenu,IDM_ENCODING_UNICODEREV,!ro);
EnableCmd(hmenu,IDM_ENCODING_UNICODE,!ro);
@@ -5577,6 +5578,11 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
break;
+ case IDM_FILE_PRESERVE_FILEMODTIME:
+ Settings.PreserveOrigFileModifyTime = !Settings.PreserveOrigFileModifyTime;
+ break;
+
+
case IDM_VIEW_CHANGENOTIFY:
if (ChangeNotifyDlg(hwnd))
InstallFileWatching(Globals.CurrentFile);
diff --git a/src/TypeDefs.h b/src/TypeDefs.h
index e2f8cf754..252e77dc6 100644
--- a/src/TypeDefs.h
+++ b/src/TypeDefs.h
@@ -431,6 +431,7 @@ typedef struct _settings_t
int CustomSchemesDlgPosY;
bool MuteMessageBeep;
bool SplitUndoTypingSeqOnLnBreak;
+ bool PreserveOrigFileModifyTime;
RECT PrintMargin;
EDITFINDREPLACE EFR_Data;
diff --git a/src/VersionEx.h b/src/VersionEx.h
index 967e7219a..ce0de48aa 100644
--- a/src/VersionEx.h
+++ b/src/VersionEx.h
@@ -8,7 +8,7 @@
#define VERSION_MAJOR 5
#define VERSION_MINOR 19
#define VERSION_REV 827
-#define VERSION_BUILD 2598
+#define VERSION_BUILD 2599
#define SCINTILLA_VER 420
#define ONIGURUMA_REGEX_VER 6.9.3
#define UCHARDET_VER 2018.09.27