forked from qt-creator/qt-creator
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:
@@ -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);
|
||||
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
static QStringListModel *replaceCompletionModel();
|
||||
static void setUseFakeVim(bool on);
|
||||
static void openFindToolBar(FindDirection direction);
|
||||
static void openFindDialog(IFindFilter *filter);
|
||||
static void openFindDialog(IFindFilter *filter, const QString &findString = {});
|
||||
|
||||
static void setCaseSensitive(bool sensitive);
|
||||
static void setWholeWord(bool wholeOnly);
|
||||
|
||||
@@ -132,7 +132,15 @@ FindToolBar::FindToolBar(CurrentDocumentFind *currentDocumentFind)
|
||||
ActionContainer *mfind = ActionManager::actionContainer(Constants::M_FIND);
|
||||
Command *cmd;
|
||||
|
||||
m_ui.advancedButton->setDefaultAction(ActionManager::command(Constants::ADVANCED_FIND)->action());
|
||||
auto advancedAction = new QAction(Find::tr("Open Advanced Find..."), this);
|
||||
advancedAction->setIconText(Find::tr("Advanced..."));
|
||||
Command *advancedCmd = ActionManager::command(Constants::ADVANCED_FIND);
|
||||
if (advancedCmd)
|
||||
advancedCmd->augmentActionWithShortcutToolTip(advancedAction);
|
||||
m_ui.advancedButton->setDefaultAction(advancedAction);
|
||||
connect(advancedAction, &QAction::triggered, this, [this] {
|
||||
Find::openFindDialog(nullptr, m_ui.findEdit->text());
|
||||
});
|
||||
|
||||
m_goToCurrentFindAction = new QAction(this);
|
||||
ActionManager::registerAction(m_goToCurrentFindAction, Constants::S_RETURNTOEDITOR,
|
||||
|
||||
@@ -42,6 +42,8 @@ public:
|
||||
|
||||
void setLightColoredIcon(bool lightColored);
|
||||
|
||||
QString getFindText();
|
||||
|
||||
public slots:
|
||||
void setBackward(bool backward);
|
||||
|
||||
@@ -112,7 +114,6 @@ private:
|
||||
|
||||
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||
void setFindText(const QString &text);
|
||||
QString getFindText();
|
||||
QString getReplaceText();
|
||||
void selectFindText();
|
||||
void updateIcons();
|
||||
|
||||
Reference in New Issue
Block a user