X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/94ef8919bf196c134706d2ed71f9fadaec68838b..307285e9635a4bf584d6e5d7478876b90ef870f0:/src/dolphinviewcontainer.cpp diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index a70055b5f..f09d3d1c9 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -58,7 +58,7 @@ #include "filterbar.h" #include "kurlnavigator.h" #include "viewproperties.h" -#include "dolphinsettings.h" +#include "settings/dolphinsettings.h" #include "dolphin_generalsettings.h" DolphinViewContainer::DolphinViewContainer(DolphinMainWindow* mainWindow, @@ -214,6 +214,16 @@ bool DolphinViewContainer::isFilterBarVisible() const return m_filterBar->isVisible(); } +void DolphinViewContainer::showFilterBar(bool show) +{ + Q_ASSERT(m_filterBar != 0); + if (show) { + m_filterBar->show(); + } else { + closeFilterBar(); + } +} + bool DolphinViewContainer::isUrlEditable() const { return m_urlNavigator->isUrlEditable(); @@ -261,10 +271,6 @@ void DolphinViewContainer::slotDirListerCompleted() KonqFileItemCapabilities capabilities(KFileItemList() << item); createNew->setEnabled(capabilities.supportsWriting()); } - - if (isActive()) { - m_view->setFocus(); - } } void DolphinViewContainer::showItemInfo(const KFileItem& item) @@ -299,12 +305,6 @@ void DolphinViewContainer::closeFilterBar() emit showFilterBarChanged(false); } -void DolphinViewContainer::showFilterBar(bool show) -{ - Q_ASSERT(m_filterBar != 0); - m_filterBar->setVisible(show); -} - void DolphinViewContainer::updateStatusBar() { // As the item count information is less important @@ -363,6 +363,16 @@ void DolphinViewContainer::restoreView(const KUrl& url) { if (KProtocolManager::supportsListing(url)) { m_view->updateView(url, m_urlNavigator->savedRootUrl()); + if (isActive()) { + // When an URL has been entered, the view should get the focus. + // The focus must be requested asynchronously, as changing the URL might create + // a new view widget. Using QTimer::singleShow() works reliable, however + // QMetaObject::invokeMethod() with a queued connection does not work, which might + // indicate that we should pass a hint to DolphinView::updateView() + // regarding the focus instead. To test: Enter an URL and press CTRL+Enter. + // Expected result: The view should get the focus. + QTimer::singleShot(0, this, SLOT(requestFocus())); + } } else if (KProtocolManager::isSourceProtocol(url)) { QString app = "konqueror"; if (url.protocol().startsWith(QLatin1String("http"))) { @@ -404,6 +414,11 @@ void DolphinViewContainer::redirect(const KUrl& oldUrl, const KUrl& newUrl) m_urlNavigator->blockSignals(block); } +void DolphinViewContainer::requestFocus() +{ + m_view->setFocus(); +} + void DolphinViewContainer::slotItemTriggered(const KFileItem& item) { KUrl url = item.targetUrl();