setObjectName("Dolphin#");
m_viewTab.append(ViewTab());
+ ViewTab& viewTab = m_viewTab[m_tabIndex];
+ viewTab.wasActive = true; // The first opened tab is automatically active
KIO::FileUndoManager* undoManager = KIO::FileUndoManager::self();
undoManager->setUiInterface(new UndoUiInterface());
setAcceptDrops(true);
- m_viewTab[m_tabIndex].splitter = new QSplitter(this);
- m_viewTab[m_tabIndex].splitter->setChildrenCollapsible(false);
+ viewTab.splitter = new QSplitter(this);
+ viewTab.splitter->setChildrenCollapsible(false);
setupActions();
connect(m_actionHandler, SIGNAL(actionBeingHandled()), SLOT(clearStatusBar()));
connect(m_actionHandler, SIGNAL(createDirectory()), SLOT(createDirectory()));
- m_viewTab[m_tabIndex].primaryView = createViewContainer(homeUrl, m_viewTab[m_tabIndex].splitter);
+ viewTab.primaryView = createViewContainer(homeUrl, viewTab.splitter);
- m_activeViewContainer = m_viewTab[m_tabIndex].primaryView;
+ m_activeViewContainer = viewTab.primaryView;
connectViewSignals(m_activeViewContainer);
DolphinView* view = m_activeViewContainer->view();
m_activeViewContainer->show();
m_centralWidgetLayout->setSpacing(0);
m_centralWidgetLayout->setMargin(0);
m_centralWidgetLayout->addWidget(m_tabBar);
- m_centralWidgetLayout->addWidget(m_viewTab[m_tabIndex].splitter, 1);
+ m_centralWidgetLayout->addWidget(viewTab.splitter, 1);
setCentralWidget(centralWidget);
setupDockWidgets();
// provide a split view, if the startup settings are set this way
if (GeneralSettings::splitView()) {
- const int tabIndex = m_viewTab.count() - 1;
- createSecondaryView(tabIndex);
- m_viewTab[tabIndex].secondaryView->setActive(true);
- m_viewTab[tabIndex].isPrimaryViewActive = false;
+ const int newTabIndex = m_viewTab.count() - 1;
+ createSecondaryView(newTabIndex);
+ viewTab.secondaryView->setActive(true);
+ viewTab.isPrimaryViewActive = false;
}
if (focusWidget) {
void DolphinMainWindow::activateNextTab()
{
- if ((m_viewTab.count() == 1) || (m_tabBar->count() < 2)) {
- return;
+ if (m_viewTab.count() >= 2) {
+ const int tabIndex = (m_tabBar->currentIndex() + 1) % m_tabBar->count();
+ m_tabBar->setCurrentIndex(tabIndex);
}
-
- const int tabIndex = (m_tabBar->currentIndex() + 1) % m_tabBar->count();
- m_tabBar->setCurrentIndex(tabIndex);
}
void DolphinMainWindow::activatePrevTab()
{
- if ((m_viewTab.count() == 1) || (m_tabBar->count() < 2)) {
- return;
- }
-
- int tabIndex = m_tabBar->currentIndex() - 1;
- if (tabIndex == -1) {
- tabIndex = m_tabBar->count() - 1;
+ if (m_viewTab.count() >= 2) {
+ int tabIndex = m_tabBar->currentIndex() - 1;
+ if (tabIndex == -1) {
+ tabIndex = m_tabBar->count() - 1;
+ }
+ m_tabBar->setCurrentIndex(tabIndex);
}
- m_tabBar->setCurrentIndex(tabIndex);
}
void DolphinMainWindow::openInNewTab()
}
viewTab.splitter->show();
+ if (!viewTab.wasActive) {
+ viewTab.wasActive = true;
+
+ // If the tab has not been activated yet the size of the KItemListView is
+ // undefined and results in an unwanted animation. To prevent this a
+ // reloading of the directory gets triggered.
+ viewTab.primaryView->view()->reload();
+ if (viewTab.secondaryView) {
+ viewTab.secondaryView->view()->reload();
+ }
+ }
+
setActiveViewContainer(viewTab.isPrimaryViewActive ? viewTab.primaryView :
viewTab.secondaryView);
}
void DolphinMainWindow::createSecondaryView(int tabIndex)
{
- QSplitter* splitter = m_viewTab[tabIndex].splitter;
- const int newWidth = (m_viewTab[tabIndex].primaryView->width() - splitter->handleWidth()) / 2;
+ ViewTab& viewTab = m_viewTab[tabIndex];
+
+ QSplitter* splitter = viewTab.splitter;
+ const int newWidth = (viewTab.primaryView->width() - splitter->handleWidth()) / 2;
- const DolphinView* view = m_viewTab[tabIndex].primaryView->view();
- m_viewTab[tabIndex].secondaryView = createViewContainer(view->url(), 0);
- splitter->addWidget(m_viewTab[tabIndex].secondaryView);
+ const DolphinView* view = viewTab.primaryView->view();
+ viewTab.secondaryView = createViewContainer(view->url(), 0);
+ splitter->addWidget(viewTab.secondaryView);
splitter->setSizes(QList<int>() << newWidth << newWidth);
- connectViewSignals(m_viewTab[tabIndex].secondaryView);
- m_viewTab[tabIndex].secondaryView->setActive(false);
- m_viewTab[tabIndex].secondaryView->show();
+
+ connectViewSignals(viewTab.secondaryView);
+ viewTab.secondaryView->setActive(false);
+ viewTab.secondaryView->resize(newWidth, viewTab.primaryView->height());
+ viewTab.secondaryView->show();
}
QString DolphinMainWindow::tabProperty(const QString& property, int tabIndex) const