From fdeb7620f1e7f33e5bb5749a28f84870c9af70ac Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 9 Sep 2011 16:10:57 +0200 Subject: Keep multiple search results in history. Change-Id: I7350c78479343e85b1ca4957e08bccefb5756d20 Reviewed-on: http://codereview.qt-project.org/4556 Reviewed-by: Qt Sanity Bot Reviewed-by: Leandro T. C. Melo --- src/plugins/texteditor/basefilefind.cpp | 17 +++++++++-------- src/plugins/texteditor/basefilefind.h | 6 +++--- 2 files changed, 12 insertions(+), 11 deletions(-) (limited to 'src/plugins/texteditor') diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 105fa8f8f9..c910c07bd7 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -113,14 +113,10 @@ void BaseFileFind::runNewSearch(const QString &txt, Find::FindFlags findFlags, updateComboEntries(m_filterCombo, true); m_watcher.setFuture(QFuture()); m_currentSearchCount = 0; - m_currentSearch = Find::SearchResultWindow::instance()->startNewSearch(searchMode, - searchMode == SearchResultWindow::SearchAndReplace - ? QString::fromLatin1("TextEditor") - : QString()); + m_currentSearch = Find::SearchResultWindow::instance()->startNewSearch(label(), + toolTip().arg(Find::IFindFilter::descriptionForFindFlags(findFlags)), + txt, searchMode, QString::fromLatin1("TextEditor")); m_currentSearch->setTextToReplace(txt); - m_currentSearch->setInfo(label(), - toolTip().arg(Find::IFindFilter::descriptionForFindFlags(findFlags)), - txt); QVariantList searchParameters; searchParameters << qVariantFromValue(txt) << qVariantFromValue(findFlags); m_currentSearch->setUserData(searchParameters); @@ -169,6 +165,10 @@ void BaseFileFind::doReplace(const QString &text, } void BaseFileFind::displayResult(int index) { + if (!m_currentSearch) { + m_watcher.cancel(); + return; + } Utils::FileSearchResultList results = m_watcher.future().resultAt(index); QList items; foreach (const Utils::FileSearchResult &result, results) { @@ -190,7 +190,8 @@ void BaseFileFind::displayResult(int index) { void BaseFileFind::searchFinished() { - m_currentSearch->finishSearch(); + if (m_currentSearch) + m_currentSearch->finishSearch(); m_currentSearch = 0; m_isSearching = false; m_resultLabel = 0; diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h index 6f757b1003..d3505d0da4 100644 --- a/src/plugins/texteditor/basefilefind.h +++ b/src/plugins/texteditor/basefilefind.h @@ -78,8 +78,8 @@ public: protected: virtual Utils::FileIterator *files() const = 0; - virtual QString label() const = 0; // see Find::SearchResult::setInfo - virtual QString toolTip() const = 0; // see Find::SearchResult::setInfo, + virtual QString label() const = 0; // see Find::SearchResultWindow::startNewSearch + virtual QString toolTip() const = 0; // see Find::SearchResultWindow::startNewSearch, // add %1 placeholder where the find flags should be put void writeCommonSettings(QSettings *settings); @@ -103,7 +103,7 @@ private: void runNewSearch(const QString &txt, Find::FindFlags findFlags, Find::SearchResultWindow::SearchMode searchMode); - Find::SearchResult *m_currentSearch; + QPointer m_currentSearch; int m_currentSearchCount; QFutureWatcher m_watcher; -- cgit v1.2.1