diff --git a/Versions/build.txt b/Versions/build.txt
index baa8d02fe..6743f5e6c 100644
--- a/Versions/build.txt
+++ b/Versions/build.txt
@@ -1 +1 @@
-2618
+2619
diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf
index 6c1b3521b..efc6b6b6d 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 8d8ba6e86..3f1dbc1ed 100644
--- a/src/Config/Config.cpp
+++ b/src/Config/Config.cpp
@@ -1164,6 +1164,7 @@ void LoadFlags()
Flags.NoFileVariables = IniSectionGetInt(Settings2_Section, L"NoFileVariables", DefaultFlags.NoFileVariables);
Flags.PrintFileAndLeave = s_flagPrintFileAndLeave;
+ Flags.bPreserveFileModTime = false;
ReleaseIniFile();
}
diff --git a/src/Dialogs.c b/src/Dialogs.c
index c67bd80db..7a0f721e9 100644
--- a/src/Dialogs.c
+++ b/src/Dialogs.c
@@ -3322,7 +3322,7 @@ WINDOWPLACEMENT WindowPlacementFromInfo(HWND hwnd, const WININFO* pWinInfo)
//
void DialogNewWindow(HWND hwnd, bool bSaveOnRunTools, bool bSetCurFile)
{
- if (bSaveOnRunTools && !FileSave(false, true, false, false, false)) { return; }
+ if (bSaveOnRunTools && !FileSave(false, true, false, false, Flags.bPreserveFileModTime)) { return; }
WCHAR szModuleName[MAX_PATH] = { L'\0' };
GetModuleFileName(NULL, szModuleName, COUNTOF(szModuleName));
diff --git a/src/Notepad3.c b/src/Notepad3.c
index 2055a5c18..401a48a23 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -1234,7 +1234,7 @@ HWND InitInstance(HINSTANCE hInstance,LPCWSTR pszCmdLine,int nCmdShow)
}
SciCall_SetSavePoint();
_SetSaveNeededFlag(true);
- FileSave(true, false, false, false, false); // issued from elevation instances
+ FileSave(true, false, false, false, Flags.bPreserveFileModTime); // issued from elevation instances
}
if (s_flagJumpTo) { // Jump to position
EditJumpTo(Globals.hwndEdit,s_iInitialLine,s_iInitialColumn);
@@ -1462,13 +1462,13 @@ LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
if (IsWindow(Globals.hwndDlgCustomizeSchemes)) {
PostMessage(Globals.hwndDlgCustomizeSchemes, WM_CLOSE, 0, 0);
}
- if (FileSave(false, true, false, false, false)) {
+ if (FileSave(false, true, false, false, Flags.bPreserveFileModTime)) {
DestroyWindow(hwnd);
}
break;
case WM_QUERYENDSESSION:
- if (FileSave(false, true, false, false, false)) {
+ if (FileSave(false, true, false, false, Flags.bPreserveFileModTime)) {
return TRUE;
}
break;
@@ -2951,7 +2951,7 @@ LRESULT MsgChangeNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
else {
INT_PTR const answer = InfoBoxLng(MB_YESNO | MB_ICONWARNING, NULL, IDS_MUI_FILECHANGENOTIFY2);
if ((IDOK == answer) || (IDYES == answer)) {
- FileSave(true, false, false, false, false);
+ FileSave(true, false, false, false, Flags.bPreserveFileModTime);
}
}
@@ -3054,9 +3054,10 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
EnableCmd(hmenu,IDM_FILE_PROPERTIES,i);
EnableCmd(hmenu,IDM_FILE_CREATELINK,i);
EnableCmd(hmenu,IDM_FILE_ADDTOFAV,i);
-
+
EnableCmd(hmenu,IDM_FILE_READONLY,i);
CheckCmd(hmenu,IDM_FILE_READONLY,s_bFileReadOnly);
+ CheckCmd(hmenu, IDM_FILE_PRESERVE_FILEMODTIME, Flags.bPreserveFileModTime);
EnableCmd(hmenu,IDM_ENCODING_UNICODEREV,!ro);
EnableCmd(hmenu,IDM_ENCODING_UNICODE,!ro);
@@ -3514,22 +3515,23 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_FILE_SAVE:
- FileSave(true, false, false, false, false);
+ FileSave(true, false, false, false, Flags.bPreserveFileModTime);
break;
case IDM_FILE_SAVEAS:
- FileSave(true, false, true, false, false);
+ FileSave(true, false, true, false, Flags.bPreserveFileModTime);
break;
case IDM_FILE_SAVECOPY:
- FileSave(true, false, true, true, false);
+ FileSave(true, false, true, true, Flags.bPreserveFileModTime);
break;
case IDM_FILE_PRESERVE_FILEMODTIME:
- FileSave(true, false, false, false, true);
+ Flags.bPreserveFileModTime = true;
+ FileSave(true, false, false, false, Flags.bPreserveFileModTime);
break;
@@ -3577,7 +3579,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
if (!StringCchLenW(Globals.CurrentFile,COUNTOF(Globals.CurrentFile)))
break;
- if (Settings.SaveBeforeRunningTools && !FileSave(false,true,false,false, false))
+ if (Settings.SaveBeforeRunningTools && !FileSave(false,true,false,false,Flags.bPreserveFileModTime))
break;
if (StringCchLenW(Globals.CurrentFile,COUNTOF(Globals.CurrentFile))) {
@@ -3618,7 +3620,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_FILE_RUN:
{
- if (Settings.SaveBeforeRunningTools && !FileSave(false, true, false, false, false)) {
+ if (Settings.SaveBeforeRunningTools && !FileSave(false, true, false, false, Flags.bPreserveFileModTime)) {
break;
}
StringCchCopy(tchMaxPathBuffer,COUNTOF(tchMaxPathBuffer),Globals.CurrentFile);
@@ -3629,7 +3631,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
break;
case IDM_FILE_OPENWITH:
- if (Settings.SaveBeforeRunningTools && !FileSave(false, true, false, false, false))
+ if (Settings.SaveBeforeRunningTools && !FileSave(false, true, false, false, Flags.bPreserveFileModTime))
break;
OpenWithDlg(hwnd,Globals.CurrentFile);
break;
@@ -3695,7 +3697,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_FILE_OPENFAV:
- if (FileSave(false, true, false, false, false)) {
+ if (FileSave(false, true, false, false, Flags.bPreserveFileModTime)) {
if (FavoritesDlg(hwnd,tchMaxPathBuffer))
{
if (PathIsLnkToDirectory(tchMaxPathBuffer,NULL,0))
@@ -3742,7 +3744,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_FILE_RECENT:
if (MRU_Count(Globals.pFileMRU) > 0) {
- if (FileSave(false, true, false, false, false)) {
+ if (FileSave(false, true, false, false, Flags.bPreserveFileModTime)) {
WCHAR tchFile[MAX_PATH] = { L'\0' };
if (FileMRUDlg(hwnd, tchFile)) {
FileLoad(true, false, false, false, true, false, tchFile);
@@ -5563,7 +5565,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case CMD_SHIFTESC:
- if (FileSave(true, false, false, false, false)) {
+ if (FileSave(true, false, false, false, Flags.bPreserveFileModTime)) {
PostMessage(hwnd, WM_CLOSE, 0, 0);
}
break;
@@ -9305,11 +9307,12 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload,
if (bNew || bReload) {
if (FocusedView.HideNonMatchedLines) { EditToggleView(Globals.hwndEdit); }
+ Flags.bPreserveFileModTime = false;
}
if (!bDontSave)
{
- if (!FileSave(false, true, false, false, false)) {
+ if (!FileSave(false, true, false, false, Flags.bPreserveFileModTime)) {
return false;
}
}
@@ -9445,6 +9448,8 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload,
Encoding_Current(fioStatus.iEncoding); // load may change encoding
Encoding_HasChanged(fioStatus.iEncoding);
+ Flags.bPreserveFileModTime = false;
+
int idx = 0;
DocPos iCaretPos = 0;
LPCWSTR pszBookMarks = L"";
diff --git a/src/TypeDefs.h b/src/TypeDefs.h
index 8985b664b..eaa3f51fb 100644
--- a/src/TypeDefs.h
+++ b/src/TypeDefs.h
@@ -451,12 +451,12 @@ extern SETTINGS_T Settings;
typedef struct _flags_t
{
int ToolbarLook;
+ int PrintFileAndLeave;
bool bDevDebugMode;
bool bStickyWindowPosition;
bool bReuseWindow;
bool bSingleFileInstance;
-
bool MultiFileArg;
bool RelativeFileMRU;
bool PortableMyDocs;
@@ -466,8 +466,7 @@ typedef struct _flags_t
bool NoCGIGuess;
bool NoFileVariables;
bool ShellUseSystemMRU;
-
- int PrintFileAndLeave;
+ bool bPreserveFileModTime;
} FLAGS_T, *PFLAGS_T;
diff --git a/src/VersionEx.h b/src/VersionEx.h
index b4d62f5f3..39e03ec0d 100644
--- a/src/VersionEx.h
+++ b/src/VersionEx.h
@@ -8,7 +8,7 @@
#define VERSION_MAJOR 5
#define VERSION_MINOR 19
#define VERSION_REV 905
-#define VERSION_BUILD 2618
+#define VERSION_BUILD 2619
#define SCINTILLA_VER 420
#define ONIGURUMA_REGEX_VER 6.9.3
#define UCHARDET_VER 2018.09.27