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
This commit is contained in:
Peter Penz 2008-04-13 19:12:52 +00:00
parent f332f4cf9a
commit 9d1a8d98dd
2 changed files with 11 additions and 2 deletions

View 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());

View 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;