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