X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/4d81aabd1ee78c2fca61452ef3a866cfad0c88a5..a2c9c05de2dfabbb2bb614390c8e03023dad2bd1:/src/dolphintabwidget.cpp diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index 5a9007012..13619a5f9 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -204,19 +204,13 @@ void DolphinTabWidget::openDirectories(const QList& dirs, bool splitView) QList::const_iterator it = dirs.constBegin(); while (it != dirs.constEnd()) { const QUrl& primaryUrl = *(it++); - const std::optional alreadyOpenDirectory = viewOpenAtDirectory(primaryUrl); + const std::optional viewIndexAtDirectory = viewOpenAtDirectory(primaryUrl); // When the user asks for a URL that's already open, // activate it instead of opening a new tab - if (alreadyOpenDirectory.has_value()) { + if (viewIndexAtDirectory.has_value()) { somethingWasAlreadyOpen = true; - activateTab(alreadyOpenDirectory->tabIndex); - const auto tabPage = tabPageAt(alreadyOpenDirectory->tabIndex); - if (alreadyOpenDirectory->isInPrimaryView) { - tabPage->primaryViewContainer()->setActive(true); - } else { - tabPage->secondaryViewContainer()->setActive(true); - } + activateViewContainerAt(viewIndexAtDirectory.value()); } else if (splitView && (it != dirs.constEnd())) { const QUrl& secondaryUrl = *(it++); if (somethingWasAlreadyOpen) { @@ -252,14 +246,8 @@ void DolphinTabWidget::openFiles(const QList& files, bool splitView) // We also make sure the view will be activated. auto viewIndex = viewShowingItem(file); if (viewIndex.has_value()) { - activateTab(viewIndex->tabIndex); - if (viewIndex->isInPrimaryView) { - tabPageAt(viewIndex->tabIndex)->primaryViewContainer()->view()->clearSelection(); - tabPageAt(viewIndex->tabIndex)->primaryViewContainer()->setActive(true); - } else { - tabPageAt(viewIndex->tabIndex)->secondaryViewContainer()->view()->clearSelection(); - tabPageAt(viewIndex->tabIndex)->secondaryViewContainer()->setActive(true); - } + viewContainerAt(viewIndex.value())->view()->clearSelection(); + activateViewContainerAt(viewIndex.value()); dirsThatWereAlreadyOpen.append(dir); } else { dirsThatNeedToBeOpened.append(dir); @@ -514,6 +502,26 @@ QString DolphinTabWidget::tabName(DolphinTabPage* tabPage) const return name.replace('&', QLatin1String("&&")); } +DolphinViewContainer *DolphinTabWidget::viewContainerAt(DolphinTabWidget::ViewIndex viewIndex) const +{ + const auto tabPage = tabPageAt(viewIndex.tabIndex); + if (!tabPage) { + return nullptr; + } + return viewIndex.isInPrimaryView ? tabPage->primaryViewContainer() : tabPage->secondaryViewContainer(); +} + +DolphinViewContainer *DolphinTabWidget::activateViewContainerAt(DolphinTabWidget::ViewIndex viewIndex) +{ + activateTab(viewIndex.tabIndex); + auto viewContainer = viewContainerAt(viewIndex); + if (!viewContainer) { + return nullptr; + } + viewContainer->setActive(true); + return viewContainer; +} + const std::optional DolphinTabWidget::viewOpenAtDirectory(const QUrl& directory) const { int i = currentIndex();