From 9c0ed539ccad01158a63d5cda4e9fdb026180449 Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Wed, 4 Nov 2009 18:10:03 +0100 Subject: [PATCH] Prevent global replace before search is done. Also fix focusing issues of the replace line edit. Reviewed-by: Roberto Raggi --- src/plugins/cpptools/cppfindreferences.cpp | 1 + src/plugins/find/searchresultwindow.cpp | 43 +++++++++++++--------- src/plugins/find/searchresultwindow.h | 9 ++--- src/plugins/texteditor/basefilefind.cpp | 1 + 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 6881c7d376e..72677abf6e2 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -350,6 +350,7 @@ void CppFindReferences::displayResult(int index) void CppFindReferences::searchFinished() { + _resultWindow->finishSearch(); emit changed(); } diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp index c60e2d6c9ee..5bbf06af512 100644 --- a/src/plugins/find/searchresultwindow.cpp +++ b/src/plugins/find/searchresultwindow.cpp @@ -53,7 +53,8 @@ static const QString SETTINGSKEYEXPANDRESULTS("ExpandResults"); SearchResultWindow::SearchResultWindow() : m_currentSearch(0), - m_isShowingReplaceUI(false) + m_isShowingReplaceUI(false), + m_focusReplaceEdit(false) { m_widget = new QStackedWidget; m_widget->setWindowTitle(name()); @@ -124,15 +125,13 @@ void SearchResultWindow::setShowReplaceUI(bool show) m_isShowingReplaceUI = show; } -bool SearchResultWindow::isShowingReplaceUI() const -{ - return m_isShowingReplaceUI; -} - void SearchResultWindow::handleReplaceButton() { QTC_ASSERT(m_currentSearch, return); - m_currentSearch->replaceButtonClicked(m_replaceTextEdit->text(), checkedItems()); + // check if button is actually enabled, because this is also triggered + // by pressing return in replace line edit + if (m_replaceButton->isEnabled()) + m_currentSearch->replaceButtonClicked(m_replaceTextEdit->text(), checkedItems()); } QList<SearchResultItem> SearchResultWindow::checkedItems() const @@ -177,9 +176,19 @@ SearchResult *SearchResultWindow::startNewSearch(SearchMode searchOrSearchAndRep return m_currentSearch; } +void SearchResultWindow::finishSearch() +{ + if (m_items.count()) { + m_replaceButton->setEnabled(true); + } else { + showNoMatchesFound(); + } +} + void SearchResultWindow::clearContents() { - setReplaceUIEnabled(false); + m_replaceTextEdit->setEnabled(false); + m_replaceButton->setEnabled(false); m_replaceTextEdit->clear(); m_searchResultTreeView->clear(); m_items.clear(); @@ -189,7 +198,8 @@ void SearchResultWindow::clearContents() void SearchResultWindow::showNoMatchesFound() { - setReplaceUIEnabled(false); + m_replaceTextEdit->setEnabled(false); + m_replaceButton->setEnabled(false); m_widget->setCurrentWidget(m_noMatchesFoundDisplay); } @@ -220,7 +230,8 @@ void SearchResultWindow::setFocus() m_searchResultTreeView->setFocus(); } else { if (!m_widget->focusWidget() - || m_widget->focusWidget() == m_replaceTextEdit) { + || m_widget->focusWidget() == m_replaceTextEdit + || m_focusReplaceEdit) { m_replaceTextEdit->setFocus(); } else { m_searchResultTreeView->setFocus(); @@ -257,20 +268,16 @@ void SearchResultWindow::addResult(const QString &fileName, int lineNumber, cons m_items.append(item); m_searchResultTreeView->appendResultLine(index, fileName, lineNumber, rowText, searchTermStart, searchTermLength); if (index == 0) { - setReplaceUIEnabled(true); - // We didn't have an item before, set the focus to the m_searchResultTreeView + m_replaceTextEdit->setEnabled(true); + // We didn't have an item before, set the focus to the search widget + m_focusReplaceEdit = true; setFocus(); + m_focusReplaceEdit = false; m_searchResultTreeView->selectionModel()->select(m_searchResultTreeView->model()->index(0, 0, QModelIndex()), QItemSelectionModel::Select); emit navigateStateChanged(); } } -void SearchResultWindow::setReplaceUIEnabled(bool enabled) -{ - m_replaceTextEdit->setEnabled(enabled); - m_replaceButton->setEnabled(enabled); -} - void SearchResultWindow::handleExpandCollapseToolButton(bool checked) { m_searchResultTreeView->setAutoExpandResults(checked); diff --git a/src/plugins/find/searchresultwindow.h b/src/plugins/find/searchresultwindow.h index c41ca3424f7..e8996f8c029 100644 --- a/src/plugins/find/searchresultwindow.h +++ b/src/plugins/find/searchresultwindow.h @@ -103,9 +103,6 @@ public: void setTextEditorFont(const QFont &font); - void setShowReplaceUI(bool show); - bool isShowingReplaceUI() const; - void setTextToReplace(const QString &textToReplace); QString textToReplace() const; @@ -114,17 +111,18 @@ public: public slots: void clearContents(); - void showNoMatchesFound(); void addResult(const QString &fileName, int lineNumber, const QString &lineText, int searchTermStart, int searchTermLength, const QVariant &userData = QVariant()); + void finishSearch(); private slots: void handleExpandCollapseToolButton(bool checked); void handleJumpToSearchResult(int index, bool checked); void handleReplaceButton(); - void setReplaceUIEnabled(bool enabled); + void showNoMatchesFound(); private: + void setShowReplaceUI(bool show); void readSettings(); void writeSettings(); QList<SearchResultItem> checkedItems() const; @@ -140,6 +138,7 @@ private: SearchResult *m_currentSearch; QList<SearchResultItem> m_items; bool m_isShowingReplaceUI; + bool m_focusReplaceEdit; }; } // namespace Find diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 5126d2e96ab..97479b37c2b 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -121,6 +121,7 @@ void BaseFileFind::displayResult(int index) { void BaseFileFind::searchFinished() { + m_resultWindow->finishSearch(); m_isSearching = false; m_resultLabel = 0; emit changed(); -- GitLab