diff options
Diffstat (limited to 'src/dolphinviewcontainer.cpp')
| -rw-r--r-- | src/dolphinviewcontainer.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 5543dad5a..3f8d7d71e 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -938,6 +938,21 @@ void DolphinViewContainer::redirect(const QUrl &oldUrl, const QUrl &newUrl) setSearchBarVisible(isSearchUrl(newUrl)); m_urlNavigator->blockSignals(block); + + // Before emitting `urlChanged`, temporarily disconnect the `activated` signal to avoid activation of `DolphinViewContainer`. + bool blockActivation = m_urlNavigatorConnected && !isActive(); + if (blockActivation) { + disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::activated, this, &DolphinViewContainer::activate); + } + + Q_EMIT m_view->urlChanged(newUrl); + + if (blockActivation) { + connect(m_urlNavigatorConnected, &DolphinUrlNavigator::activated, this, &DolphinViewContainer::activate); + + // Force inactivate `DolphinUrlNavigator`. + m_urlNavigatorConnected->setActive(false); + } } void DolphinViewContainer::requestFocus() |
