From f6d6e42ac1867a5f1979887bf93041cb67f3867f Mon Sep 17 00:00:00 2001 From: Scott Sumner <30118311+sasumner@users.noreply.github.com> Date: Mon, 12 Aug 2019 10:53:13 -0400 Subject: [PATCH] Fix "clear all marks in find dialog also removes bookmarks" issue Fix partially "clear all marks in find dialog also removes bookmarks" issue: * Bookmark line unticked: Clear all marks button press clears only all redmarking * Bookmark line ticked: Clear all marks button press clears all redmarking and all bookmarks Fix #3546, close #6042 --- .../src/ScitillaComponent/FindReplaceDlg.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/PowerEditor/src/ScitillaComponent/FindReplaceDlg.cpp b/PowerEditor/src/ScitillaComponent/FindReplaceDlg.cpp index dbe19504e..f5a75a21d 100644 --- a/PowerEditor/src/ScitillaComponent/FindReplaceDlg.cpp +++ b/PowerEditor/src/ScitillaComponent/FindReplaceDlg.cpp @@ -1359,7 +1359,10 @@ INT_PTR CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM { if (isMacroRecording) saveInMacro(wParam, FR_OP_FIND); (*_ppEditView)->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE); - (*_ppEditView)->execute(SCI_MARKERDELETEALL, MARK_BOOKMARK); + if (_options._doMarkLine) + { + (*_ppEditView)->execute(SCI_MARKERDELETEALL, MARK_BOOKMARK); + } setStatusbarMessage(TEXT(""), FSNoMessage); } } @@ -2562,7 +2565,7 @@ void FindReplaceDlg::saveInMacro(size_t cmd, int cmdType) } if (cmd == IDC_CLEAR_ALL) { - booleans = 0; + booleans = _options._doMarkLine ? IDF_MARKLINE_CHECK : 0; } ::SendMessage(_hParent, WM_FRSAVE_INT, IDC_FRCOMMAND_BOOLEANS, booleans); ::SendMessage(_hParent, WM_FRSAVE_INT, IDC_FRCOMMAND_EXEC, cmd); @@ -2796,7 +2799,11 @@ void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, const generic_st case IDC_CLEAR_ALL: { (*_ppEditView)->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE); - (*_ppEditView)->execute(SCI_MARKERDELETEALL, MARK_BOOKMARK); + if (_env->_doMarkLine) + { + (*_ppEditView)->execute(SCI_MARKERDELETEALL, MARK_BOOKMARK); + } + setStatusbarMessage(TEXT(""), FSNoMessage); break; }