diff options
| -rw-r--r-- | src/dolphinviewcontainer.cpp | 2 | ||||
| -rw-r--r-- | src/search/bar.cpp | 6 | ||||
| -rw-r--r-- | src/search/bar.h | 15 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 4d7472ed3..56c659b76 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -339,7 +339,7 @@ void DolphinViewContainer::setSearchBarVisible(bool visible) { if (!visible) { if (isSearchBarVisible()) { - m_searchBar->setVisible(false, WithAnimation); + m_searchBar->setVisible(false, WithAnimation, Search::Bar::HideBehavior::KeepCurrentUrl); } return; } diff --git a/src/search/bar.cpp b/src/search/bar.cpp index 851eef942..7e31cb0f2 100644 --- a/src/search/bar.cpp +++ b/src/search/bar.cpp @@ -187,11 +187,13 @@ void Bar::selectAll() m_searchTermEditor->selectAll(); } -void Bar::setVisible(bool visible, Animated animated) +void Bar::setVisible(bool visible, Animated animated, HideBehavior hideBehavior) { if (!visible) { m_startSearchTimer->stop(); - Q_EMIT urlChangeRequested(m_searchConfiguration->searchPath()); + if (hideBehavior == HideBehavior::RestoreUrl) { + Q_EMIT urlChangeRequested(m_searchConfiguration->searchPath()); + } if (isAncestorOf(QApplication::focusWidget())) { Q_EMIT focusViewRequest(); } diff --git a/src/search/bar.h b/src/search/bar.h index 969335232..1017d813f 100644 --- a/src/search/bar.h +++ b/src/search/bar.h @@ -51,6 +51,19 @@ class Bar : public AnimatedHeightWidget, public UpdatableStateInterface Q_OBJECT public: + enum class HideBehavior { + /** + * When hiding the bar, request that the view switches back to a non-search URL (the search path). + * This is the behavior when the user explicitly quits searching. + */ + RestoreUrl, + /** + * When hiding the bar, do not request any URL change. + * This is used when the UI is hidden automatically because the view navigated elsewhere already. + */ + KeepCurrentUrl, + }; + /** * @brief Constructs a Search::Bar with an initial state matching @p dolphinQuery and with parent @p parent. */ @@ -80,7 +93,7 @@ public: * be properly un/checked. * @see AnimatedHeightWidget::setVisible(). */ - void setVisible(bool visible, Animated animated); + void setVisible(bool visible, Animated animated, HideBehavior hideBehavior = HideBehavior::RestoreUrl); /** * @returns false, when the search UI has not yet been changed to search for anything specific. For example when no search term has been entered yet. |
