]> cloud.milkyroute.net Git - dolphin.git/commitdiff
* assure that the keyboard focus is in the view when switching between tabs
authorPeter Penz <peter.penz19@gmail.com>
Mon, 1 Dec 2008 20:56:00 +0000 (20:56 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Mon, 1 Dec 2008 20:56:00 +0000 (20:56 +0000)
* assure that the URL navigator gets the focus when it is editable and a new tab is opened by File -> New Tab

BUG: 174594

svn path=/trunk/KDE/kdebase/apps/; revision=891367

src/dolphinmainwindow.cpp

index 9fe6814623573bfc23fbc5490005de9134ddc19f..053390d29397a60fb998a1998d95b9902c67cbb5 100644 (file)
@@ -297,6 +297,13 @@ void DolphinMainWindow::openNewTab()
 {
     openNewTab(m_activeViewContainer->url());
     m_tabBar->setCurrentIndex(m_viewTab.count() - 1);
+    
+    KUrlNavigator* navigator = m_activeViewContainer->urlNavigator();
+    if (navigator->isUrlEditable()) {
+        // if a new tab is opened and the URL is editable, assure that
+        // the user can edit the URL without manually setting the focus
+        navigator->setFocus();
+    }
 }
 
 void DolphinMainWindow::openNewTab(const KUrl& url)
@@ -313,6 +320,7 @@ void DolphinMainWindow::openNewTab(const KUrl& url)
     ViewTab viewTab;
     viewTab.splitter = new QSplitter(this);
     viewTab.primaryView = new DolphinViewContainer(this, viewTab.splitter, url);
+    viewTab.primaryView->setActive(false);
     connectViewSignals(viewTab.primaryView);
     viewTab.primaryView->view()->reload();
 
@@ -710,7 +718,12 @@ void DolphinMainWindow::setActiveTab(int index)
     }
 
     // hide current tab content
-    m_viewTab[m_tabIndex].isPrimaryViewActive = m_viewTab[m_tabIndex].primaryView->isActive();
+    ViewTab& hiddenTab = m_viewTab[m_tabIndex];
+    hiddenTab.isPrimaryViewActive = hiddenTab.primaryView->isActive();
+    hiddenTab.primaryView->setActive(false);
+    if (hiddenTab.secondaryView != 0) {
+        hiddenTab.secondaryView->setActive(false);
+    }
     QSplitter* splitter = m_viewTab[m_tabIndex].splitter;
     splitter->hide();
     m_centralWidgetLayout->removeWidget(splitter);