}
// 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();
viewTab.secondaryView->show();
}
- setActiveViewContainer(viewTab.primaryView);
+ setActiveViewContainer(viewTab.isPrimaryViewActive ? viewTab.primaryView :
+ viewTab.secondaryView);
}
void DolphinMainWindow::init()
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());
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;