+ chg: preserve file modification timestamp: change from persisted option to on demand save

+ fix: minor bug fixes
This commit is contained in:
Rainer Kottenhoff 2019-09-02 13:36:06 +02:00
parent 212f132804
commit 187f2c4b30
16 changed files with 63 additions and 47 deletions

View File

@ -1 +1 @@
2612
2613

View File

@ -64,7 +64,7 @@ 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 "Speichern mit Original &Zeitstempel\tCtrl+Alt+F6", IDM_FILE_PRESERVE_FILEMODTIME
MENUITEM SEPARATOR
MENUITEM "&Verschlüsselungs Passwort...", IDM_SETPASS
MENUITEM SEPARATOR

View File

@ -64,7 +64,7 @@ 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 "Save with Original File &Date/Time\tCtrl+Alt+F6", IDM_FILE_PRESERVE_FILEMODTIME
MENUITEM SEPARATOR
MENUITEM "Set Encr&yption Passphrase...", IDM_SETPASS
MENUITEM SEPARATOR

View File

@ -64,7 +64,7 @@ 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 "Save with Original File &Date/Time\tCtrl+Alt+F6", IDM_FILE_PRESERVE_FILEMODTIME
MENUITEM SEPARATOR
MENUITEM "Set Encr&yption Passphrase...", IDM_SETPASS
MENUITEM SEPARATOR

View File

@ -3,7 +3,7 @@
<assemblyIdentity
name="Notepad3"
processorArchitecture="*"
version="5.19.901.2612"
version="5.19.902.2613"
type="win32"
/>
<description>Notepad3 BETA</description>

View File

@ -911,7 +911,6 @@ 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);
@ -1382,7 +1381,6 @@ 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);

View File

@ -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)) { return; }
if (bSaveOnRunTools && !FileSave(false, true, false, false, false)) { return; }
WCHAR szModuleName[MAX_PATH] = { L'\0' };
GetModuleFileName(NULL, szModuleName, COUNTOF(szModuleName));

View File

@ -1334,7 +1334,8 @@ bool EditSaveFile(
HWND hwnd,
LPCWSTR pszFile,
EditFileIOStatus* status,
bool bSaveCopy)
bool bSaveCopy,
bool bPreserveTimeStamp)
{
HANDLE hFile;
@ -1518,7 +1519,7 @@ bool EditSaveFile(
}
}
if (Settings.PreserveOrigFileModifyTime) {
if (bPreserveTimeStamp) {
SetFileTime(hFile, NULL, NULL, &modTime);
}
CloseHandle(hFile);
@ -6324,6 +6325,7 @@ void EditMarkAllOccurrences(HWND hwnd, bool bForceClear)
void EditSelectionMultiSelectAll()
{
DocPos const iSelSize = SciCall_GetSelText(NULL);
if ((iSelSize > 1))
{
char* pszText = AllocMem(iSelSize, HEAP_ZERO_MEMORY);
@ -6341,6 +6343,7 @@ void EditSelectionMultiSelectAll()
DocPos const saveTargetBeg = SciCall_GetTargetStart();
DocPos const saveTargetEnd = SciCall_GetTargetEnd();
if (IsMarkOccurrencesEnabled() && Settings.MarkOccurrencesMatchVisible)
{
// get visible lines for update
@ -6353,7 +6356,15 @@ void EditSelectionMultiSelectAll()
}
SciCall_MultipleSelectAddEach();
SciCall_SetMainSelection(0);
SciCall_ScrollRange(SciCall_GetSelectionNAnchor(0), SciCall_GetSelectionNCaret(0));
DocPos const iMainAnchor = SciCall_GetSelectionNAnchor(0);
DocPos const iMainCaret = SciCall_GetSelectionNCaret(0);
if (iMainAnchor > iMainCaret) {
SciCall_SwapMainAnchorCaret();
SciCall_ScrollRange(iMainCaret, iMainAnchor);
}
else {
SciCall_ScrollRange(iMainAnchor, iMainCaret);
}
SciCall_ChooseCaretX();
SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore
@ -7128,7 +7139,7 @@ static void _UpdateIndicators(HWND hwnd, const int indicator, const int indicato
end = endPos;
} while (start < end);
}
//=============================================================================
@ -7156,12 +7167,19 @@ void EditUpdateIndicators(HWND hwnd, DocPos startPos, DocPos endPos, bool bClear
_UpdateIndicators(hwnd, INDIC_NP3_HYPERLINK, INDIC_NP3_HYPERLINK_U, pUrlRegEx, startPos, endPos);
}
else {
_ClearIndicatorInRange(INDIC_NP3_HYPERLINK, INDIC_NP3_HYPERLINK_U, startPos, endPos);
}
if (Settings.ColorDefHotspot)
{
static const char* pColorRegEx = "#([0-9a-fA-F]){6}";
_UpdateIndicators(hwnd, INDIC_NP3_COLOR_DEF, -1, pColorRegEx, startPos, endPos);
}
else {
_ClearIndicatorInRange(INDIC_NP3_COLOR_DEF, INDIC_NP3_COLOR_DWELL, startPos, endPos);
}
EditFinalizeStyling(hwnd, -1);
}

View File

@ -36,7 +36,7 @@ void EditDetectEOLMode(LPCSTR lpData, DWORD cbData, EditFileIOStatus* status);
void EditIndentationStatistic(HWND hwnd, EditFileIOStatus* status);
bool EditLoadFile(HWND hwnd, LPWSTR pszFile, bool bSkipUTFDetection, bool bSkipANSICPDetection,
bool bForceEncDetection, bool bClearUndoHistory, EditFileIOStatus* status);
bool EditSaveFile(HWND hwnd, LPCWSTR pszFile, EditFileIOStatus* status, bool bSaveCopy);
bool EditSaveFile(HWND hwnd, LPCWSTR pszFile, EditFileIOStatus* status, bool bSaveCopy, bool bPreserveTimeStamp);
void EditInvertCase(HWND hwnd);
void EditTitleCase(HWND hwnd);

View File

@ -1234,7 +1234,7 @@ HWND InitInstance(HINSTANCE hInstance,LPCWSTR pszCmdLine,int nCmdShow)
}
SciCall_SetSavePoint();
_SetSaveNeededFlag(true);
FileSave(true, false, false, false); // issued from elevation instances
FileSave(true, false, false, false, false); // 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)) {
if (FileSave(false, true, false, false, false)) {
DestroyWindow(hwnd);
}
break;
case WM_QUERYENDSESSION:
if (FileSave(false, true, false, false)) {
if (FileSave(false, true, false, false, false)) {
return TRUE;
}
break;
@ -2946,7 +2946,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);
FileSave(true, false, false, false, false);
}
}
@ -3052,7 +3052,6 @@ 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);
@ -3513,17 +3512,22 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_FILE_SAVE:
FileSave(true,false,false,false);
FileSave(true, false, false, false, false);
break;
case IDM_FILE_SAVEAS:
FileSave(true,false,true,false);
FileSave(true, false, true, false, false);
break;
case IDM_FILE_SAVECOPY:
FileSave(true,false,true,true);
FileSave(true, false, true, true, false);
break;
case IDM_FILE_PRESERVE_FILEMODTIME:
FileSave(true, false, false, false, true);
break;
@ -3571,7 +3575,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))
if (Settings.SaveBeforeRunningTools && !FileSave(false,true,false,false, false))
break;
if (StringCchLenW(Globals.CurrentFile,COUNTOF(Globals.CurrentFile))) {
@ -3612,7 +3616,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_FILE_RUN:
{
if (Settings.SaveBeforeRunningTools && !FileSave(false, true, false, false)) {
if (Settings.SaveBeforeRunningTools && !FileSave(false, true, false, false, false)) {
break;
}
StringCchCopy(tchMaxPathBuffer,COUNTOF(tchMaxPathBuffer),Globals.CurrentFile);
@ -3623,7 +3627,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
break;
case IDM_FILE_OPENWITH:
if (Settings.SaveBeforeRunningTools && !FileSave(false,true,false,false))
if (Settings.SaveBeforeRunningTools && !FileSave(false, true, false, false, false))
break;
OpenWithDlg(hwnd,Globals.CurrentFile);
break;
@ -3689,7 +3693,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_FILE_OPENFAV:
if (FileSave(false,true,false,false)) {
if (FileSave(false, true, false, false, false)) {
if (FavoritesDlg(hwnd,tchMaxPathBuffer))
{
if (PathIsLnkToDirectory(tchMaxPathBuffer,NULL,0))
@ -3736,7 +3740,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)) {
if (FileSave(false, true, false, false, false)) {
WCHAR tchFile[MAX_PATH] = { L'\0' };
if (FileMRUDlg(hwnd, tchFile)) {
FileLoad(true, false, false, false, true, false, tchFile);
@ -5424,12 +5428,6 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
Settings.SaveBeforeRunningTools = !Settings.SaveBeforeRunningTools;
break;
case IDM_FILE_PRESERVE_FILEMODTIME:
Settings.PreserveOrigFileModifyTime = !Settings.PreserveOrigFileModifyTime;
break;
case IDM_VIEW_CHANGENOTIFY:
if (ChangeNotifyDlg(hwnd))
InstallFileWatching(Globals.CurrentFile);
@ -5540,7 +5538,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case CMD_SHIFTESC:
if (FileSave(true, false, false, false)) {
if (FileSave(true, false, false, false, false)) {
PostMessage(hwnd, WM_CLOSE, 0, 0);
}
break;
@ -6411,6 +6409,8 @@ void HandleDWellStartEnd(const DocPos position, const UINT uid)
// ----------------------------------------------------------------------
if (position < 0) { prevPosition = -1; return; }
//SciCall_SetCursor(SC_NP3_CURSORHAND);
int const indicator_id = (_I_HYPERLINK == indicator_type) ? INDIC_NP3_HYPERLINK : INDIC_NP3_COLOR_DEF;
@ -9179,7 +9179,7 @@ static void _SplitUndoTransaction(const int iModType)
//
bool FileIO(bool fLoad,LPWSTR pszFileName,
bool bSkipUnicodeDetect,bool bSkipANSICPDetection, bool bForceEncDetection, bool bSetSavePoint,
EditFileIOStatus* status, bool bSaveCopy)
EditFileIOStatus* status, bool bSaveCopy, bool bPreserveTimeStamp)
{
WCHAR tch[MAX_PATH+40];
bool fSuccess;
@ -9204,7 +9204,7 @@ bool FileIO(bool fLoad,LPWSTR pszFileName,
}
Globals.pFileMRU->pszBookMarks[idx] = StrDup(wchBookMarks);
}
fSuccess = EditSaveFile(Globals.hwndEdit,pszFileName, status, bSaveCopy);
fSuccess = EditSaveFile(Globals.hwndEdit,pszFileName, status, bSaveCopy, bPreserveTimeStamp);
}
dwFileAttributes = GetFileAttributes(pszFileName);
@ -9276,7 +9276,7 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload,
if (!bDontSave)
{
if (!FileSave(false, true, false, false)) {
if (!FileSave(false, true, false, false, false)) {
return false;
}
}
@ -9387,11 +9387,11 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload,
if (bReload && !FileWatching.MonitoringLog)
{
_BEGIN_UNDO_ACTION_
fSuccess = FileIO(true, szFileName, bSkipUnicodeDetect, bSkipANSICPDetection, bForceEncDetection, !bReload , &fioStatus, false);
fSuccess = FileIO(true, szFileName, bSkipUnicodeDetect, bSkipANSICPDetection, bForceEncDetection, !bReload , &fioStatus, false, false);
_END_UNDO_ACTION_
}
else {
fSuccess = FileIO(true, szFileName, bSkipUnicodeDetect, bSkipANSICPDetection, bForceEncDetection, true, &fioStatus, false);
fSuccess = FileIO(true, szFileName, bSkipUnicodeDetect, bSkipANSICPDetection, bForceEncDetection, true, &fioStatus, false, false);
}
}
@ -9632,7 +9632,7 @@ bool DoElevatedRelaunch(EditFileIOStatus* pFioStatus)
StringCchCopy(p, (MAX_PATH - len), q);
}
if (pFioStatus && FileIO(false, szTempFileName, true, true, false, true, pFioStatus, true))
if (pFioStatus && FileIO(false, szTempFileName, true, true, false, true, pFioStatus, true, false))
{
// preserve encoding
WCHAR wchEncoding[80];
@ -9672,7 +9672,7 @@ bool DoElevatedRelaunch(EditFileIOStatus* pFioStatus)
// FileSave()
//
//
bool FileSave(bool bSaveAlways, bool bAsk, bool bSaveAs, bool bSaveCopy)
bool FileSave(bool bSaveAlways, bool bAsk, bool bSaveAs, bool bSaveCopy, bool bPreserveTimeStamp)
{
bool fSuccess = false;
@ -9762,7 +9762,7 @@ bool FileSave(bool bSaveAlways, bool bAsk, bool bSaveAs, bool bSaveCopy)
if (SaveFileDlg(Globals.hwndMain, tchFile, COUNTOF(tchFile), tchInitialDir))
{
fSuccess = FileIO(false, tchFile, true, true, false, true, &fioStatus, bSaveCopy);
fSuccess = FileIO(false, tchFile, true, true, false, true, &fioStatus, bSaveCopy, bPreserveTimeStamp);
if (fSuccess)
{
if (!bSaveCopy)
@ -9786,7 +9786,7 @@ bool FileSave(bool bSaveAlways, bool bAsk, bool bSaveAs, bool bSaveCopy)
}
}
else {
fSuccess = FileIO(false, Globals.CurrentFile, true, true, false, true, &fioStatus, false);
fSuccess = FileIO(false, Globals.CurrentFile, true, true, false, true, &fioStatus, false, bPreserveTimeStamp);
}
if (fSuccess)

View File

@ -170,11 +170,11 @@ bool ConsistentIndentationCheck(EditFileIOStatus* fioStatus);
bool FileIO(bool fLoad, LPWSTR pszFileName,
bool bSkipUnicodeDetect, bool bSkipANSICPDetection, bool bForceEncDetection, bool bSetSavePoint,
EditFileIOStatus* status, bool bSaveCopy);
EditFileIOStatus* status, bool bSaveCopy, bool bPreserveTimeStamp);
bool FileLoad(bool bDontSave, bool bNew, bool bReload,
bool bSkipUnicodeDetect, bool bSkipANSICPDetection, bool bForceEncDetection, LPCWSTR lpszFile);
bool FileRevert(LPCWSTR szFileName, bool);
bool FileSave(bool,bool,bool,bool);
bool FileSave(bool bSaveAlways, bool bAsk, bool bSaveAs, bool bSaveCopy, bool bPreserveTimeStamp);
bool OpenFileDlg(HWND hwnd,LPWSTR lpstrFile,int cchFile,LPCWSTR lpstrInitialDir);
bool SaveFileDlg(HWND hwnd,LPWSTR lpstrFile,int cchFile,LPCWSTR lpstrInitialDir);

View File

@ -252,6 +252,7 @@ BEGIN
VK_F5, IDM_EDIT_INSERT_LONGDATE, VIRTKEY, SHIFT, CONTROL, NOINVERT
VK_F6, IDM_FILE_SAVEAS, VIRTKEY, NOINVERT
VK_F6, IDM_FILE_SAVECOPY, VIRTKEY, CONTROL, NOINVERT
VK_F6, IDM_FILE_PRESERVE_FILEMODTIME, VIRTKEY, CONTROL, ALT, NOINVERT
VK_F7, IDM_VIEW_SAVESETTINGSNOW, VIRTKEY, NOINVERT
VK_F7, CMD_OPENINIFILE, VIRTKEY, CONTROL, NOINVERT
VK_F8, IDM_ENCODING_RECODE, VIRTKEY, NOINVERT

View File

@ -431,7 +431,6 @@ typedef struct _settings_t
int CustomSchemesDlgPosY;
bool MuteMessageBeep;
bool SplitUndoTypingSeqOnLnBreak;
bool PreserveOrigFileModifyTime;
RECT PrintMargin;
EDITFINDREPLACE EFR_Data;

View File

@ -7,8 +7,8 @@
#define SAPPNAME "Notepad3"
#define VERSION_MAJOR 5
#define VERSION_MINOR 19
#define VERSION_REV 901
#define VERSION_BUILD 2612
#define VERSION_REV 902
#define VERSION_BUILD 2613
#define SCINTILLA_VER 420
#define ONIGURUMA_REGEX_VER 6.9.3
#define UCHARDET_VER 2018.09.27

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 116 KiB