diff --git a/src/NotepadNext/dialogs/FindReplaceDialog.cpp b/src/NotepadNext/dialogs/FindReplaceDialog.cpp index cb29307ad..c90040570 100644 --- a/src/NotepadNext/dialogs/FindReplaceDialog.cpp +++ b/src/NotepadNext/dialogs/FindReplaceDialog.cpp @@ -20,6 +20,8 @@ #include "FindReplaceDialog.h" #include "ApplicationSettings.h" #include "ui_FindReplaceDialog.h" +#include "MarkerAppDecorator.h" +#include "BookMarkDecorator.h" #include #include @@ -205,6 +207,14 @@ FindReplaceDialog::FindReplaceDialog(ISearchResultsHandler *searchResults, MainW showMessage(tr("Replaced matches in %Ln files", "", count), "green"); }); + connect(ui->buttonClearBookmarks, &QPushButton::clicked, this, [=]() { + auto app = qobject_cast(qApp); + MarkerAppDecorator *decorator = app->findChild(QString(), Qt::FindDirectChildrenOnly); + BookMarkDecorator *bookMarkDecorator = editor->findChild(QString(), Qt::FindDirectChildrenOnly); + + bookMarkDecorator->clearAllBookmarks(); + decorator->clearAll(editor); + }); connect(ui->buttonClose, &QPushButton::clicked, this, &FindReplaceDialog::close); loadSettings(); @@ -317,6 +327,12 @@ void FindReplaceDialog::findAllInCurrentDocument() { qInfo(Q_FUNC_INFO); + qDebug() << "Editor pointer:" << editor; + + auto app = qobject_cast(qApp); + MarkerAppDecorator *decorator = app->findChild(QString(), Qt::FindDirectChildrenOnly); + BookMarkDecorator *bookMarkDecorator = editor->findChild(QString(), Qt::FindDirectChildrenOnly); + bool firstMatch = true; QString text = findString(); @@ -330,6 +346,17 @@ void FindReplaceDialog::findAllInCurrentDocument() } const int line = editor->lineFromPosition(start); + qDebug() << "Found result on line " << line; + if (ui->checkBoxMarkRes->isChecked()) { + if (!bookMarkDecorator->isBookmarkSet(line)){ + qDebug() << "Marking result at line " << line; + bookMarkDecorator->toggleBookmark(line); + } + if (decorator && decorator->isEnabled()) { + // Options: 0, 1, 2 + decorator->mark(editor, 1); + } + } const int lineStartPosition = editor->positionFromLine(line); const int lineEndPosition = editor->lineEndPosition(line); const int startPositionFromBeginning = start - lineStartPosition; @@ -502,6 +529,8 @@ void FindReplaceDialog::changeTab(int index) ui->buttonReplaceAllInFiles->hide(); ui->buttonFindInFilesSelector->hide(); + ui->checkBoxMarkRes->show(); + ui->buttonClearBookmarks->show(); ui->buttonCount->show(); ui->buttonFindAllInCurrent->show(); ui->buttonFindAllInDocuments->show(); @@ -521,6 +550,8 @@ void FindReplaceDialog::changeTab(int index) ui->buttonReplaceAllInFiles->show(); ui->buttonFindInFilesSelector->show(); + ui->checkBoxMarkRes->hide(); + ui->buttonClearBookmarks->hide(); ui->buttonCount->hide(); ui->buttonFindAllInCurrent->hide(); ui->buttonFindAllInDocuments->hide(); diff --git a/src/NotepadNext/dialogs/FindReplaceDialog.ui b/src/NotepadNext/dialogs/FindReplaceDialog.ui index 5d18604fe..223a401dd 100644 --- a/src/NotepadNext/dialogs/FindReplaceDialog.ui +++ b/src/NotepadNext/dialogs/FindReplaceDialog.ui @@ -11,10 +11,10 @@ - - 600 - 350 - + + 600 + 350 + Find @@ -315,6 +315,13 @@ + + + + Clear All Marks + + + @@ -470,6 +477,13 @@ 0 + + + + Mark Results + + + diff --git a/src/NotepadNext/dialogs/MainWindow.cpp b/src/NotepadNext/dialogs/MainWindow.cpp index 13bbc6296..edecec279 100644 --- a/src/NotepadNext/dialogs/MainWindow.cpp +++ b/src/NotepadNext/dialogs/MainWindow.cpp @@ -2245,4 +2245,7 @@ void MainWindow::languageMenuTriggered() QVariant v = act->data(); setLanguage(editor, v.toString()); + + // Some debugging stuff + qDebug() << "MainWindow editor pointer:" << currentEditor(); }