┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphinviewcontainer.cpp20
-rw-r--r--src/dolphinviewcontainer.h3
2 files changed, 19 insertions, 4 deletions
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp
index 8b3def9f3..1b64f9803 100644
--- a/src/dolphinviewcontainer.cpp
+++ b/src/dolphinviewcontainer.cpp
@@ -271,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)
@@ -386,6 +382,17 @@ void DolphinViewContainer::restoreView(const KUrl& url)
} else {
showErrorMessage(i18nc("@info:status", "Invalid protocol"));
}
+
+ 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()));
+ }
}
void DolphinViewContainer::saveRootUrl(const KUrl& url)
@@ -408,6 +415,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();
diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h
index d2adb5ed7..eb70c37e1 100644
--- a/src/dolphinviewcontainer.h
+++ b/src/dolphinviewcontainer.h
@@ -229,6 +229,9 @@ private slots:
*/
void redirect(const KUrl& oldUrl, const KUrl& newUrl);
+ /** Requests the focus for the view \a m_view. */
+ void requestFocus();
+
private:
bool m_showProgress;