From e75f5958737f3a302508d3e72aed4e4672a43557 Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Thu, 27 Jul 2017 21:14:55 +0200 Subject: [PATCH] SearchResultWidget: Disable replace button if replace text is unchanged To avoid unneeded file rename operations when the "Rename x files" checkbox is checked. Change-Id: I3fc8b1607979bdfcdd7a3f2d3cf172350f7ca758 Reviewed-by: Nikolai Kosjar --- .../coreplugin/find/searchresultwidget.cpp | 15 +++++++++++++-- src/plugins/coreplugin/find/searchresultwidget.h | 2 ++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/find/searchresultwidget.cpp b/src/plugins/coreplugin/find/searchresultwidget.cpp index 9eee8dee632..3db6a08f26a 100644 --- a/src/plugins/coreplugin/find/searchresultwidget.cpp +++ b/src/plugins/coreplugin/find/searchresultwidget.cpp @@ -210,6 +210,8 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) : this, &SearchResultWidget::handleReplaceButton); connect(m_replaceButton, &QAbstractButton::clicked, this, &SearchResultWidget::handleReplaceButton); + connect(m_replaceTextEdit, &QLineEdit::textChanged, + this, &SearchResultWidget::handleReplaceEditTextChanged); } SearchResultWidget::~SearchResultWidget() @@ -304,6 +306,7 @@ void SearchResultWidget::setSupportsReplace(bool replaceSupported, const QString void SearchResultWidget::setTextToReplace(const QString &textToReplace) { + m_replaceText = textToReplace; m_replaceTextEdit->setText(textToReplace); } @@ -406,7 +409,6 @@ void SearchResultWidget::goToPrevious() void SearchResultWidget::restart() { m_replaceTextEdit->setEnabled(false); - m_replaceButton->setEnabled(false); m_searchResultTreeView->clear(); m_count = 0; Id sizeWarningId(SIZE_WARNING_ID); @@ -416,6 +418,7 @@ void SearchResultWidget::restart() m_searchAgainButton->setVisible(false); m_messageWidget->setVisible(false); updateMatchesFoundLabel(); + handleReplaceEditTextChanged(); emit restarted(); } @@ -436,7 +439,6 @@ void SearchResultWidget::finishSearch(bool canceled) m_infoBar.removeInfo(sizeWarningId); m_infoBar.enableInfo(sizeWarningId); m_replaceTextEdit->setEnabled(m_count > 0); - m_replaceButton->setEnabled(m_count > 0); m_preserveCaseCheck->setEnabled(m_count > 0); m_cancelButton->setVisible(false); m_messageWidget->setVisible(canceled); @@ -461,6 +463,15 @@ void SearchResultWidget::cancelAfterSizeWarning() emit paused(false); } +void SearchResultWidget::handleReplaceEditTextChanged() +{ + const bool enabled = m_replaceTextEdit->text() != m_replaceText; + m_replaceButton->setEnabled(enabled); + m_replaceButton->setToolTip(enabled + ? QString() + : tr("Cannot replace because replacement text is unchanged.")); +} + void SearchResultWidget::handleJumpToSearchResult(const SearchResultItem &item) { emit activated(item); diff --git a/src/plugins/coreplugin/find/searchresultwidget.h b/src/plugins/coreplugin/find/searchresultwidget.h index 5309ed69e1e..bf4b9055440 100644 --- a/src/plugins/coreplugin/find/searchresultwidget.h +++ b/src/plugins/coreplugin/find/searchresultwidget.h @@ -115,6 +115,7 @@ private: void setShowReplaceUI(bool visible); void continueAfterSizeWarning(); void cancelAfterSizeWarning(); + void handleReplaceEditTextChanged(); QList checkedItems() const; void updateMatchesFoundLabel(); @@ -141,6 +142,7 @@ private: bool m_isShowingReplaceUI = false; bool m_searchAgainSupported = false; bool m_replaceSupported = false; + QString m_replaceText; }; } // Internal