diff --git a/src/plugins/bineditor/bineditorplugin.cpp b/src/plugins/bineditor/bineditorplugin.cpp index 5e85b641fd13fb558cde43868d9d8fd1b99c23c3..4faeccf10aa6b9503fc166abf8fbeb8fe6ea880a 100644 --- a/src/plugins/bineditor/bineditorplugin.cpp +++ b/src/plugins/bineditor/bineditorplugin.cpp @@ -103,7 +103,6 @@ public: m_incrementalStartPos = m_editor->selectionStart(); if (m_contPos == -1) m_contPos = m_incrementalStartPos; - findFlags &= ~Find::IFindSupport::FindBackward; int found = find(pattern, m_contPos, findFlags); Result result; if (found >= 0) { diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index a3d7f54997388ca9e512b22664ed96d3eccd10e6..418127f94fac03cec7b9ca1dbb50722fbc9883ef 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -416,10 +416,12 @@ void FakeVimPluginPrivate::windowCommand(int key) void FakeVimPluginPrivate::find(bool reverse) { - Q_UNUSED(reverse) // TODO: Creator needs an action for find in reverse. - if (Find::Internal::FindPlugin::instance()) - Find::Internal::FindPlugin::instance()->setUseFakeVim(true); - triggerAction(Find::Constants::FIND_IN_DOCUMENT); + if (Find::Internal::FindPlugin *plugin = Find::Internal::FindPlugin::instance()) { + plugin->setUseFakeVim(true); + plugin->openFindToolBar(reverse + ? Find::Internal::FindPlugin::FindBackward + : Find::Internal::FindPlugin::FindForward); + } } void FakeVimPluginPrivate::findNext(bool reverse) diff --git a/src/plugins/find/basetextfind.cpp b/src/plugins/find/basetextfind.cpp index 5c7d9be20cfcb0369a19e021565c4babe3938846..dcafd816936c97cca76135696ce19f4ab680228f 100644 --- a/src/plugins/find/basetextfind.cpp +++ b/src/plugins/find/basetextfind.cpp @@ -132,7 +132,6 @@ IFindSupport::Result BaseTextFind::findIncremental(const QString &txt, IFindSupp if (m_incrementalStartPos < 0) m_incrementalStartPos = cursor.selectionStart(); cursor.setPosition(m_incrementalStartPos); - findFlags &= ~IFindSupport::FindBackward; bool found = find(txt, findFlags, cursor); if (found) emit highlightAll(txt, findFlags); diff --git a/src/plugins/find/findplugin.cpp b/src/plugins/find/findplugin.cpp index 20f318fdaa8a310855dc45b9f682cdd9778644e8..0da0b0934e27c49e381a07313089abe176a7a3c1 100644 --- a/src/plugins/find/findplugin.cpp +++ b/src/plugins/find/findplugin.cpp @@ -314,4 +314,12 @@ void FindPlugin::setUseFakeVim(bool on) m_findToolBar->setUseFakeVim(on); } +void FindPlugin::openFindToolBar(FindDirection direction) +{ + if (m_findToolBar) { + m_findToolBar->setBackward(direction == FindBackward); + m_findToolBar->openFindToolBar(); + } +} + Q_EXPORT_PLUGIN(FindPlugin) diff --git a/src/plugins/find/findplugin.h b/src/plugins/find/findplugin.h index 2183745bab0f8598b361a340cdbcd8fb0635d89a..d0292810418d9c331f3982cbfa36afb42f39704c 100644 --- a/src/plugins/find/findplugin.h +++ b/src/plugins/find/findplugin.h @@ -56,6 +56,11 @@ public: virtual ~FindPlugin(); static FindPlugin *instance(); + enum FindDirection { + FindForward, + FindBackward + }; + // IPlugin bool initialize(const QStringList &arguments, QString *error_message); void extensionsInitialized(); @@ -67,6 +72,7 @@ public: QStringListModel *findCompletionModel() { return m_findCompletionModel; } QStringListModel *replaceCompletionModel() { return m_replaceCompletionModel; } void setUseFakeVim(bool on); + void openFindToolBar(FindDirection direction); public slots: void setCaseSensitive(bool sensitive); diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp index 0ca3b43e684b7a0acfb614da5f772a91ecba96a8..015b864a81089ec7d649776418d5fb47fe40541b 100644 --- a/src/plugins/find/findtoolbar.cpp +++ b/src/plugins/find/findtoolbar.cpp @@ -571,6 +571,12 @@ Core::FindToolBarPlaceHolder *FindToolBar::findToolBarPlaceHolder() const } void FindToolBar::openFind() +{ + setBackward(false); + openFindToolBar(); +} + +void FindToolBar::openFindToolBar() { if (!m_currentDocumentFind->candidateIsEnabled()) return; @@ -676,3 +682,8 @@ void FindToolBar::setRegularExpressions(bool regexp) { setFindFlag(IFindSupport::FindRegularExpression, regexp); } + +void FindToolBar::setBackward(bool backward) +{ + setFindFlag(IFindSupport::FindBackward, backward); +} diff --git a/src/plugins/find/findtoolbar.h b/src/plugins/find/findtoolbar.h index f8afe82106889187edf788077de6a28a96fa2c99..9788369bf24bee256c2a225792b4f18986d73650 100644 --- a/src/plugins/find/findtoolbar.h +++ b/src/plugins/find/findtoolbar.h @@ -50,6 +50,7 @@ class FindPlugin; class FindToolBar : public Utils::StyledBar { + friend class FindPlugin; Q_OBJECT public: @@ -86,6 +87,7 @@ private slots: void setCaseSensitive(bool sensitive); void setWholeWord(bool wholeOnly); void setRegularExpressions(bool regexp); + void setBackward(bool backward); void adaptToCandidate(); @@ -93,6 +95,7 @@ protected: bool focusNextPrevChild(bool next); private: + void openFindToolBar(); void invokeClearResults(); bool setFocusToCurrentFindSupport(); void setFindFlag(IFindSupport::FindFlag flag, bool enabled);