Find: Copy search string from find tool bar to advanced search

Always when pressing the "Advanced..." button it makes sense to copy the search
term to the advanced search dialog.
Otherwise if advanced search is triggered while the focus is in the find tool bar.

Fixes: QTCREATORBUG-17964
Change-Id: I96106e769238a689ed6c55fae6de451d250aa44d
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2022-09-02 15:31:21 +02:00
parent dbfdd334b5
commit a6176e293b
4 changed files with 25 additions and 7 deletions

View File

@@ -239,12 +239,21 @@ bool FindPrivate::isAnyFilterEnabled() const
return Utils::anyOf(m_findDialog->findFilters(), &IFindFilter::isEnabled);
}
void Find::openFindDialog(IFindFilter *filter)
void Find::openFindDialog(IFindFilter *filter, const QString &findString)
{
d->m_currentDocumentFind->acceptCandidate();
const QString currentFindString =
d->m_currentDocumentFind->isEnabled() ?
d->m_currentDocumentFind->currentFindString() : QString();
const QString currentFindString = [findString] {
if (!findString.isEmpty())
return findString;
if (d->m_findToolBar->isVisible()
&& QApplication::focusWidget() == d->m_findToolBar->focusWidget()
&& !d->m_findToolBar->getFindText().isEmpty()) {
return d->m_findToolBar->getFindText();
}
if (d->m_currentDocumentFind->isEnabled())
return d->m_currentDocumentFind->currentFindString();
return QString();
}();
if (!currentFindString.isEmpty())
d->m_findDialog->setFindText(currentFindString);
d->m_findDialog->setCurrentFilter(filter);