]> cloud.milkyroute.net Git - dolphin.git/commitdiff
fixes for tabs:
authorPeter Penz <peter.penz19@gmail.com>
Sun, 13 Apr 2008 19:12:52 +0000 (19:12 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 13 Apr 2008 19:12:52 +0000 (19:12 +0000)
* remember active view when having a split view inside a tab
* prevent a possible recursion when returning into a tab having a split view

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

src/dolphinmainwindow.cpp
src/dolphinmainwindow.h

index 84d22ec4fa00c6fbe68901416df5af97a372fea7..d19f8eb1d556e7a10399213ae6da0ef38ed9af2b 100644 (file)
@@ -673,6 +673,7 @@ void DolphinMainWindow::setActiveTab(int index)
     }
 
     // hide current tab content
+    m_viewTab[m_tabIndex].isPrimaryViewActive = m_viewTab[m_tabIndex].primaryView->isActive();
     QSplitter* splitter = m_viewTab[m_tabIndex].splitter;
     m_centralWidgetLayout->removeWidget(splitter);
     splitter->hide();
@@ -688,7 +689,8 @@ void DolphinMainWindow::setActiveTab(int index)
         viewTab.secondaryView->show();
     }
 
-    setActiveViewContainer(viewTab.primaryView);
+    setActiveViewContainer(viewTab.isPrimaryViewActive ? viewTab.primaryView :
+                                                         viewTab.secondaryView);
 }
 
 void DolphinMainWindow::init()
@@ -777,7 +779,13 @@ void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* viewContain
 
     m_activeViewContainer->setActive(false);
     m_activeViewContainer = viewContainer;
+
+    // Activating the view container might trigger a recursive setActiveViewContainer() call
+    // inside DolphinMainWindow::toggleActiveView() when having a split view. Temporary
+    // disconnect the activated() signal in this case:
+    disconnect(m_activeViewContainer->view(), SIGNAL(activated()), this, SLOT(toggleActiveView()));
     m_activeViewContainer->setActive(true);
+    connect(m_activeViewContainer->view(), SIGNAL(activated()), this, SLOT(toggleActiveView()));
 
     m_actionHandler->setCurrentView(viewContainer->view());
 
index 2eb282af5353390c315722983d4d8ae6e27dd13f..fa02f082132af0adad0a2cc1aa807407a59abdd1 100644 (file)
@@ -391,7 +391,8 @@ private:
 
     struct ViewTab
     {
-        ViewTab() : primaryView(0), secondaryView(0), splitter(0) {}
+        ViewTab() : isPrimaryViewActive(true), primaryView(0), secondaryView(0), splitter(0) {}
+        bool isPrimaryViewActive;
         DolphinViewContainer* primaryView;
         DolphinViewContainer* secondaryView;
         QSplitter* splitter;