Core: never disable the replacement edit of search results

We need to be able to change the replacement text after a failed clangd
replacement request.

Change-Id: I0e97af18c6cbfd4bc4e4f8705a7b760dd97bd960
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2022-10-11 10:48:59 +02:00
parent 36ffacabe7
commit d011733131

View File

@@ -153,7 +153,6 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) :
m_replaceTextEdit = new WideEnoughLineEdit(m_topReplaceWidget); m_replaceTextEdit = new WideEnoughLineEdit(m_topReplaceWidget);
m_replaceLabel->setBuddy(m_replaceTextEdit); m_replaceLabel->setBuddy(m_replaceTextEdit);
m_replaceTextEdit->setMinimumWidth(120); m_replaceTextEdit->setMinimumWidth(120);
m_replaceTextEdit->setEnabled(false);
setTabOrder(m_replaceTextEdit, m_searchResultTreeView); setTabOrder(m_replaceTextEdit, m_searchResultTreeView);
m_preserveCaseCheck = new QCheckBox(m_topReplaceWidget); m_preserveCaseCheck = new QCheckBox(m_topReplaceWidget);
m_preserveCaseCheck->setText(tr("Preser&ve case")); m_preserveCaseCheck->setText(tr("Preser&ve case"));
@@ -241,16 +240,9 @@ void SearchResultWidget::addResults(const QList<SearchResultItem> &items, Search
} }
} }
m_replaceTextEdit->setEnabled(true); m_searchResultTreeView->selectionModel()
// We didn't have an item before, set the focus to the search widget or replace text edit ->select(m_searchResultTreeView->model()->index(0, 0, QModelIndex()),
setShowReplaceUI(m_replaceSupported); QItemSelectionModel::Select);
if (m_replaceSupported) {
m_replaceTextEdit->setFocus();
m_replaceTextEdit->selectAll();
} else {
m_searchResultTreeView->setFocus();
}
m_searchResultTreeView->selectionModel()->select(m_searchResultTreeView->model()->index(0, 0, QModelIndex()), QItemSelectionModel::Select);
emit navigateStateChanged(); emit navigateStateChanged();
} else if (m_count <= SEARCHRESULT_WARNING_LIMIT) { } else if (m_count <= SEARCHRESULT_WARNING_LIMIT) {
return; return;
@@ -289,6 +281,7 @@ bool SearchResultWidget::supportsReplace() const
void SearchResultWidget::setTextToReplace(const QString &textToReplace) void SearchResultWidget::setTextToReplace(const QString &textToReplace)
{ {
m_replaceTextEdit->setText(textToReplace); m_replaceTextEdit->setText(textToReplace);
m_replaceTextEdit->selectAll();
} }
QString SearchResultWidget::textToReplace() const QString SearchResultWidget::textToReplace() const
@@ -307,6 +300,10 @@ void SearchResultWidget::setShowReplaceUI(bool visible)
m_searchResultTreeView->model()->setShowReplaceUI(visible); m_searchResultTreeView->model()->setShowReplaceUI(visible);
m_topReplaceWidget->setVisible(visible); m_topReplaceWidget->setVisible(visible);
m_isShowingReplaceUI = visible; m_isShowingReplaceUI = visible;
if (visible)
m_replaceTextEdit->setFocus();
else
m_searchResultTreeView->setFocus();
} }
bool SearchResultWidget::hasFocusInternally() const bool SearchResultWidget::hasFocusInternally() const
@@ -316,23 +313,17 @@ bool SearchResultWidget::hasFocusInternally() const
void SearchResultWidget::setFocusInternally() void SearchResultWidget::setFocusInternally()
{ {
if (m_count > 0) { if (!canFocusInternally() || hasFocusInternally())
if (m_isShowingReplaceUI) { return;
if (!focusWidget() || focusWidget() == m_replaceTextEdit) { if (m_isShowingReplaceUI && (!focusWidget() || focusWidget() == m_replaceTextEdit))
m_replaceTextEdit->setFocus(); m_replaceTextEdit->setFocus();
m_replaceTextEdit->selectAll(); else
} else { m_searchResultTreeView->setFocus();
m_searchResultTreeView->setFocus();
}
} else {
m_searchResultTreeView->setFocus();
}
}
} }
bool SearchResultWidget::canFocusInternally() const bool SearchResultWidget::canFocusInternally() const
{ {
return m_count > 0; return m_isShowingReplaceUI || m_count > 0;
} }
void SearchResultWidget::notifyVisibilityChanged(bool visible) void SearchResultWidget::notifyVisibilityChanged(bool visible)
@@ -389,7 +380,6 @@ void SearchResultWidget::goToPrevious()
void SearchResultWidget::restart() void SearchResultWidget::restart()
{ {
m_replaceTextEdit->setEnabled(false);
m_replaceButton->setEnabled(false); m_replaceButton->setEnabled(false);
m_searchResultTreeView->clear(); m_searchResultTreeView->clear();
m_searching = true; m_searching = true;
@@ -440,7 +430,6 @@ void SearchResultWidget::finishSearch(bool canceled, const QString &reason)
Id sizeWarningId(SIZE_WARNING_ID); Id sizeWarningId(SIZE_WARNING_ID);
m_infoBar.removeInfo(sizeWarningId); m_infoBar.removeInfo(sizeWarningId);
m_infoBar.unsuppressInfo(sizeWarningId); m_infoBar.unsuppressInfo(sizeWarningId);
m_replaceTextEdit->setEnabled(m_count > 0);
m_replaceButton->setEnabled(m_count > 0); m_replaceButton->setEnabled(m_count > 0);
m_preserveCaseCheck->setEnabled(m_count > 0); m_preserveCaseCheck->setEnabled(m_count > 0);
m_cancelButton->setVisible(false); m_cancelButton->setVisible(false);