┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-04-13 19:12:52 +0000
committerPeter Penz <[email protected]>2008-04-13 19:12:52 +0000
commit9d1a8d98ddee728adf8345aefffd9c27b356c876 (patch)
tree78d061b0cdb39b8a88ad02fb200cf37023dcdaa5
parentf332f4cf9aac445910bef422888dcaf021a0d500 (diff)
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
-rw-r--r--src/dolphinmainwindow.cpp10
-rw-r--r--src/dolphinmainwindow.h3
2 files changed, 11 insertions, 2 deletions
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;