diff --git a/src/plugins/find/findplugin.cpp b/src/plugins/find/findplugin.cpp index ee62bea84bf99848b62c834153d2ba2911aa8396..2a5d10470708990a5ed420e1f15ac6ca211a3ce6 100644 --- a/src/plugins/find/findplugin.cpp +++ b/src/plugins/find/findplugin.cpp @@ -105,6 +105,14 @@ void FindPlugin::filterChanged() QTC_ASSERT(changedFilter, return); QTC_ASSERT(action, return); action->setEnabled(changedFilter->isEnabled()); + bool haveEnabledFilters = false; + foreach (IFindFilter *filter, m_filterActions.keys()) { + if (filter->isEnabled()) { + haveEnabledFilters = true; + break; + } + } + m_openFindDialog->setEnabled(haveEnabledFilters); } void FindPlugin::openFindFilter() @@ -112,8 +120,6 @@ void FindPlugin::openFindFilter() QAction *action = qobject_cast<QAction*>(sender()); QTC_ASSERT(action, return); IFindFilter *filter = action->data().value<IFindFilter *>(); - QTC_ASSERT(filter, return); - QTC_ASSERT(filter->isEnabled(), return); QString currentFindString = (m_currentDocumentFind->isEnabled() ? m_currentDocumentFind->currentFindString() : ""); if (!currentFindString.isEmpty()) m_findDialog->setFindText(currentFindString); @@ -127,6 +133,7 @@ void FindPlugin::setupMenu() Core::ActionContainer *mfind = am->createMenu(Constants::M_FIND); medit->addMenu(mfind, Core::Constants::G_EDIT_FIND); mfind->menu()->setTitle(tr("&Find/Replace")); + mfind->appendGroup(Constants::G_FIND_CURRENTDOCUMENT); mfind->appendGroup(Constants::G_FIND_FILTERS); mfind->appendGroup(Constants::G_FIND_FLAGS); mfind->appendGroup(Constants::G_FIND_ACTIONS); @@ -141,6 +148,12 @@ void FindPlugin::setupMenu() separator->setSeparator(true); cmd = am->registerAction(separator, QLatin1String("Find.Sep.Actions"), globalcontext); mfind->addAction(cmd, Constants::G_FIND_ACTIONS); + + m_openFindDialog = new QAction(tr("Find Dialog"), this); + cmd = am->registerAction(m_openFindDialog, QLatin1String("Find.Dialog"), globalcontext); + cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+F"))); + mfind->addAction(cmd, Constants::G_FIND_FILTERS); + connect(m_openFindDialog, SIGNAL(triggered()), this, SLOT(openFindFilter())); } void FindPlugin::setupFilterMenuItems() @@ -153,9 +166,13 @@ void FindPlugin::setupFilterMenuItems() Core::ActionContainer *mfind = am->actionContainer(Constants::M_FIND); m_filterActions.clear(); + bool haveEnabledFilters = false; foreach (IFindFilter *filter, findInterfaces) { - QAction *action = new QAction(filter->name(), this); - action->setEnabled(filter->isEnabled()); + QAction *action = new QAction(QString(" %1").arg(filter->name()), this); + bool isEnabled = filter->isEnabled(); + if (isEnabled) + haveEnabledFilters = true; + action->setEnabled(isEnabled); action->setData(qVariantFromValue(filter)); cmd = am->registerAction(action, QLatin1String("FindFilter.")+filter->name(), globalcontext); cmd->setDefaultKeySequence(filter->defaultShortcut()); @@ -165,6 +182,8 @@ void FindPlugin::setupFilterMenuItems() connect(filter, SIGNAL(changed()), this, SLOT(filterChanged())); } m_findDialog->setFindFilters(findInterfaces); + m_openFindDialog->setEnabled(haveEnabledFilters); + } QTextDocument::FindFlags FindPlugin::findFlags() const diff --git a/src/plugins/find/findplugin.h b/src/plugins/find/findplugin.h index 53bd805aaa2d5a8f05a2cf2054d48a5e727bbbb7..a4c2ce283823902d6e22495d5ebbdd9a975f1661 100644 --- a/src/plugins/find/findplugin.h +++ b/src/plugins/find/findplugin.h @@ -97,6 +97,7 @@ private: QStringListModel *m_replaceCompletionModel; QStringList m_findCompletions; QStringList m_replaceCompletions; + QAction *m_openFindDialog; }; } // namespace Internal diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp index 2c2295740d01bfd0be4a0a445b0d4a938ad21edd..97f66d5d27565b3d6af0cbabec5b8df8f8ab2a11 100644 --- a/src/plugins/find/findtoolbar.cpp +++ b/src/plugins/find/findtoolbar.cpp @@ -149,7 +149,7 @@ FindToolBar::FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumen m_findInDocumentAction = new QAction(tr("Current Document"), this); cmd = am->registerAction(m_findInDocumentAction, Constants::FIND_IN_DOCUMENT, globalcontext); cmd->setDefaultKeySequence(QKeySequence::Find); - mfind->addAction(cmd, Constants::G_FIND_FILTERS); + mfind->addAction(cmd, Constants::G_FIND_CURRENTDOCUMENT); connect(m_findInDocumentAction, SIGNAL(triggered()), this, SLOT(openFind())); if (QApplication::clipboard()->supportsFindBuffer()) { diff --git a/src/plugins/find/textfindconstants.h b/src/plugins/find/textfindconstants.h index 40394dfb857c37c5288974819bd32a771a376f59..a430c9989767a57c9437f6bb446b79e670f90d51 100644 --- a/src/plugins/find/textfindconstants.h +++ b/src/plugins/find/textfindconstants.h @@ -34,6 +34,7 @@ namespace Find { namespace Constants { const char * const M_FIND = "Find.FindMenu"; +const char * const G_FIND_CURRENTDOCUMENT = "Find.FindMenu.CurrentDocument"; const char * const G_FIND_FILTERS = "Find.FindMenu.Filters"; const char * const G_FIND_FLAGS = "Find.FindMenu.Flags"; const char * const G_FIND_ACTIONS = "Find.FindMenu.Actions"; diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp index af0a962ec34c54ddd3daa5b8fa51920ae133f6cc..c6448c2f801ae33d924d958e48d9d0d92424dfc3 100644 --- a/src/plugins/projectexplorer/allprojectsfind.cpp +++ b/src/plugins/projectexplorer/allprojectsfind.cpp @@ -65,7 +65,7 @@ bool AllProjectsFind::isEnabled() const QKeySequence AllProjectsFind::defaultShortcut() const { - return QKeySequence("Ctrl+Shift+F"); + return QKeySequence(); } QStringList AllProjectsFind::files() diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index 123efdbb82409039088a320ce20903ee628cb1f4..4fcfc68642e5f5f27717c98aa242730f86143430 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -64,7 +64,7 @@ bool CurrentProjectFind::isEnabled() const QKeySequence CurrentProjectFind::defaultShortcut() const { - return QKeySequence("Ctrl+Alt+F"); + return QKeySequence(); } QStringList CurrentProjectFind::files()