From: Peter Penz Date: Sun, 13 Apr 2008 19:12:52 +0000 (+0000) Subject: fixes for tabs: X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/9d1a8d98ddee728adf8345aefffd9c27b356c876?ds=sidebyside fixes for tabs: * 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 --- diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 84d22ec4f..d19f8eb1d 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -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()); diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index 2eb282af5..fa02f0821 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -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;