┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphinmainwindow.cpp16
-rw-r--r--src/dolphinmainwindow.h3
2 files changed, 19 insertions, 0 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index d9b534e3f..0523085ae 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -397,6 +397,8 @@ void DolphinMainWindow::openNewTab()
void DolphinMainWindow::openNewTab(const KUrl& url)
{
+ QWidget* focusWidget = QApplication::focusWidget();
+
if (m_viewTab.count() == 1) {
// Only one view is open currently and hence no tab is shown at
// all. Before creating a tab for 'url', provide a tab for the current URL.
@@ -429,6 +431,12 @@ void DolphinMainWindow::openNewTab(const KUrl& url)
m_viewTab[tabIndex].secondaryView->setActive(true);
m_viewTab[tabIndex].isPrimaryViewActive = false;
}
+
+ if (focusWidget != 0) {
+ // The DolphinViewContainer grabbed the keyboard focus. As the tab is opened
+ // in background, assure that the previous focused widget gets the focus back.
+ focusWidget->setFocus();
+ }
}
void DolphinMainWindow::activateNextTab()
@@ -487,6 +495,14 @@ void DolphinMainWindow::toggleActiveView()
setActiveViewContainer(m_activeViewContainer == right ? left : right);
}
+void DolphinMainWindow::showEvent(QShowEvent* event)
+{
+ KXmlGuiWindow::showEvent(event);
+ if (!event->spontaneous()) {
+ m_activeViewContainer->view()->setFocus();
+ }
+}
+
void DolphinMainWindow::closeEvent(QCloseEvent* event)
{
DolphinSettings& settings = DolphinSettings::instance();
diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h
index cfdc21618..269c71844 100644
--- a/src/dolphinmainwindow.h
+++ b/src/dolphinmainwindow.h
@@ -165,6 +165,9 @@ signals:
void requestItemInfo(const KFileItem& item);
protected:
+ /** @see QWidget::showEvent() */
+ virtual void showEvent(QShowEvent* event);
+
/** @see QMainWindow::closeEvent() */
virtual void closeEvent(QCloseEvent* event);