diff --git a/Versions/build.txt b/Versions/build.txt index f2155a43f..96f37f219 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -2612 +2613 diff --git a/language/np3_de_de/menu_de_de.rc b/language/np3_de_de/menu_de_de.rc index d2467ef9e..52c0f4340 100644 --- a/language/np3_de_de/menu_de_de.rc +++ b/language/np3_de_de/menu_de_de.rc @@ -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 diff --git a/language/np3_en_gb/menu_en_gb.rc b/language/np3_en_gb/menu_en_gb.rc index 61e46f736..b2879be43 100644 --- a/language/np3_en_gb/menu_en_gb.rc +++ b/language/np3_en_gb/menu_en_gb.rc @@ -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 diff --git a/language/np3_en_us/menu_en_us.rc b/language/np3_en_us/menu_en_us.rc index c80662357..10361fe28 100644 --- a/language/np3_en_us/menu_en_us.rc +++ b/language/np3_en_us/menu_en_us.rc @@ -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 diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index f9436fdb1..8da667bc4 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 338a90393..8d8ba6e86 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -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); diff --git a/src/Dialogs.c b/src/Dialogs.c index 4557dd63f..c67bd80db 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)) { return; } + if (bSaveOnRunTools && !FileSave(false, true, false, false, false)) { return; } WCHAR szModuleName[MAX_PATH] = { L'\0' }; GetModuleFileName(NULL, szModuleName, COUNTOF(szModuleName)); diff --git a/src/Edit.c b/src/Edit.c index 6ef0fb462..0588a7771 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -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); } diff --git a/src/Edit.h b/src/Edit.h index ef126ab08..892d7d512 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -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); diff --git a/src/Notepad3.c b/src/Notepad3.c index 4d189543e..108e58ae6 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); // 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) diff --git a/src/Notepad3.h b/src/Notepad3.h index a59583d90..f1a2be748 100644 --- a/src/Notepad3.h +++ b/src/Notepad3.h @@ -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); diff --git a/src/Notepad3.rc b/src/Notepad3.rc index 53798e3d3..f644e39f3 100644 --- a/src/Notepad3.rc +++ b/src/Notepad3.rc @@ -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 diff --git a/src/TypeDefs.h b/src/TypeDefs.h index 77beafd60..8985b664b 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -431,7 +431,6 @@ 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 cc8a43a3c..9d3caa90b 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -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 diff --git a/themes/Flat/48/Toolbar.bmp b/themes/Flat/48/Toolbar.bmp index 889fc5117..c8cd23cde 100644 Binary files a/themes/Flat/48/Toolbar.bmp and b/themes/Flat/48/Toolbar.bmp differ diff --git a/themes/professional/32/Toolbar.bmp b/themes/professional/32/Toolbar.bmp index 1c0e43083..48c3e7e00 100644 Binary files a/themes/professional/32/Toolbar.bmp and b/themes/professional/32/Toolbar.bmp differ