diff --git a/language/common_res.h b/language/common_res.h index 5e5d9c882..d5bb15900 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -227,6 +227,7 @@ #define IDS_MUI_CLEAR_REPL_HISTORY 15043 #define IDS_MUI_WRAPSEARCH_FWD 15044 #define IDS_MUI_WRAPSEARCH_BCK 15045 +#define IDS_MUI_REPLCLIPTAG 15046 #define IDS_MUI_TRANSL_AUTHOR 15050 #define IDS_MUI_ASSOCIATED_EXT 15051 diff --git a/language/np3_de_de/strings_de_de.rc b/language/np3_de_de/strings_de_de.rc index 6def2d11e..95f735ac3 100644 --- a/language/np3_de_de/strings_de_de.rc +++ b/language/np3_de_de/strings_de_de.rc @@ -268,6 +268,7 @@ BEGIN "Suchen-Historie löschen" IDS_MUI_CLEAR_REPL_HISTORY "Ersetzen-Historie löschen" + IDS_MUI_REPLCLIPTAG "Ersetzen durch Clipboard Shortcut [^c]" IDS_MUI_WRAPSEARCH_FWD "Wrap-Around Fund von Oben" IDS_MUI_WRAPSEARCH_BCK "Wrap-Around Fund von Unten" END diff --git a/language/np3_en_us/strings_en_us.rc b/language/np3_en_us/strings_en_us.rc index af1975a20..ce064b995 100644 --- a/language/np3_en_us/strings_en_us.rc +++ b/language/np3_en_us/strings_en_us.rc @@ -268,6 +268,7 @@ BEGIN "Clear Find History" IDS_MUI_CLEAR_REPL_HISTORY "Clear Replace History" + IDS_MUI_REPLCLIPTAG "Replace by Clipboard Shortcut [^c]" IDS_MUI_WRAPSEARCH_FWD "Wrap-Around match from top" IDS_MUI_WRAPSEARCH_BCK "Wrap-Around match from bottom" END diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index f3229c1c4..0e87ef979 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -1579,6 +1579,7 @@ void LoadSettings() GET_BOOL_VALUE_FROM_INISECTION(EditLayoutRTL, false); GET_BOOL_VALUE_FROM_INISECTION(DialogsLayoutRTL, false); GET_BOOL_VALUE_FROM_INISECTION(PreferredLocale4DateFmt, false); + GET_BOOL_VALUE_FROM_INISECTION(ReplaceByClipboardTag, true); #ifdef D_NP3_WIN10_DARK_MODE Defaults.WinThemeDarkMode = ShouldAppsUseDarkModeEx(); @@ -1850,6 +1851,7 @@ static bool _SaveSettings(bool bForceSaveSettings) SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveRecentFiles); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, PreserveCaretPos); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveFindReplace); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveFindReplace); if (Settings.EFR_Data.bFindClose != Defaults.EFR_Data.bFindClose) { IniSectionSetBool(IniSecSettings, L"CloseFind", Settings.EFR_Data.bFindClose); @@ -2028,6 +2030,7 @@ static bool _SaveSettings(bool bForceSaveSettings) SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, EditLayoutRTL); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, DialogsLayoutRTL); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, PreferredLocale4DateFmt); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ReplaceByClipboardTag); #ifdef D_NP3_WIN10_DARK_MODE SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, WinThemeDarkMode); diff --git a/src/Edit.c b/src/Edit.c index 80cebdd57..0a3ac4da8 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -5836,7 +5836,9 @@ static LPCWSTR _EditGetFindStrg(HWND hwnd, const LPEDITFINDREPLACE lpefr, bool b static char* _GetReplaceString(HWND hwnd, CLPCEDITFINDREPLACE lpefr, int* iReplaceMsg) { char* pszReplace = NULL; // replace text of arbitrary size - if (StringCchCompareXW(StrgGet(lpefr->chReplaceTemplate), L"^c") == 0) { + if (Settings.ReplaceByClipboardTag && + (StringCchCompareXW(StrgGet(lpefr->chReplaceTemplate), L"^c")) == 0) + { *iReplaceMsg = SCI_REPLACETARGET; pszReplace = EditGetClipboardText(hwnd, true, NULL, NULL); } @@ -6227,7 +6229,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar } WCHAR wchMenuBuf[80] = {L'\0'}; - HMENU hmenu = GetSystemMenu(hwnd, false); + HMENU hmenu = GetSystemMenu(hwnd, FALSE); GetLngString(IDS_MUI_SAVEPOS, wchMenuBuf, COUNTOF(wchMenuBuf)); InsertMenu(hmenu, 0, MF_BYPOSITION | MF_STRING | MF_ENABLED, IDS_MUI_SAVEPOS, wchMenuBuf); @@ -6239,6 +6241,11 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar GetLngString(IDS_MUI_CLEAR_REPL_HISTORY, wchMenuBuf, COUNTOF(wchMenuBuf)); InsertMenu(hmenu, 4, MF_BYPOSITION | MF_STRING | MF_ENABLED, IDS_MUI_CLEAR_REPL_HISTORY, wchMenuBuf); InsertMenu(hmenu, 5, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); + GetLngString(IDS_MUI_REPLCLIPTAG, wchMenuBuf, COUNTOF(wchMenuBuf)); + InsertMenu(hmenu, 6, MF_BYPOSITION | MF_STRING | MF_ENABLED, IDS_MUI_REPLCLIPTAG, wchMenuBuf); + InsertMenu(hmenu, 7, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); + + CheckCmd(hmenu, IDS_MUI_REPLCLIPTAG, Settings.ReplaceByClipboardTag); hBrushRed = CreateSolidBrush(rgbRedColorRef); @@ -6323,6 +6330,8 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar DeleteObject(hBrushRed); DeleteObject(hBrushGreen); DeleteObject(hBrushBlue); + GetSystemMenu(hwnd, TRUE); + s_pEfrData = NULL; Globals.hwndDlgFindReplace = NULL; } @@ -6868,6 +6877,12 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar SetDlgItemText(hwnd, IDC_REPLACETEXT, L""); break; + case IDACC_REPLCLIPTAG: + Settings.ReplaceByClipboardTag = !Settings.ReplaceByClipboardTag; + HMENU hmenu = GetSystemMenu(hwnd, FALSE); + CheckCmd(hmenu, IDS_MUI_REPLCLIPTAG, Settings.ReplaceByClipboardTag); + break; + case IDACC_FINDNEXT: PostWMCommand(hwnd, IDOK); break; @@ -6918,6 +6933,9 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar } else if (wParam == IDS_MUI_CLEAR_REPL_HISTORY) { PostWMCommand(hwnd, IDACC_CLEAR_REPL_HISTORY); return TRUE; + } else if (wParam == IDS_MUI_REPLCLIPTAG) { + PostWMCommand(hwnd, IDACC_REPLCLIPTAG); + return TRUE; } break; diff --git a/src/TypeDefs.h b/src/TypeDefs.h index 3ef0eae43..ac954e673 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -614,6 +614,8 @@ typedef struct SETTINGS_T { int FocusViewMarkerMode; bool PreferredLocale4DateFmt; int AutoSaveInterval; + bool ReplaceByClipboardTag; + AutoSaveBackupOptions AutoSaveOptions; #ifdef D_NP3_WIN10_DARK_MODE @@ -642,7 +644,7 @@ extern SETTINGS_T Settings; typedef struct FLAGS_T { int ToolbarLook; - int PrintFileAndLeave; + int PrintFileAndLeave; bool bHugeFileLoadState; bool bDevDebugMode; diff --git a/src/resource.h b/src/resource.h index f2a293251..2f7679e19 100644 --- a/src/resource.h +++ b/src/resource.h @@ -97,6 +97,7 @@ #define IDACC_PREVIEW 313 #define IDACC_CLEAR_FIND_HISTORY 314 #define IDACC_CLEAR_REPL_HISTORY 315 +#define IDACC_REPLCLIPTAG 316 #define IDC_SETCURLEXERTV 402