From cc06711735d53ae1d2d68fa3096d454828bcb531 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Mon, 11 Jan 2010 09:21:16 +0000 Subject: [PATCH] - When the filterbar has been activated as startup setting, still the view should get the keyboard focus. - Assure that the keyboard focus does not get lost when a tab is opened in background. CCBUG: 183394 svn path=/trunk/KDE/kdebase/apps/; revision=1072868 --- src/dolphinmainwindow.cpp | 16 ++++++++++++++++ src/dolphinmainwindow.h | 3 +++ 2 files changed, 19 insertions(+) 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); -- 2.47.3