// activate it instead of opening a new tab
if (alreadyOpenDirectory.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(alreadyOpenDirectory.value());
} else if (splitView && (it != dirs.constEnd())) {
const QUrl& secondaryUrl = *(it++);
if (somethingWasAlreadyOpen) {
// 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);
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<const DolphinTabWidget::ViewIndex> DolphinTabWidget::viewOpenAtDirectory(const QUrl& directory) const
{
int i = currentIndex();
const int tabIndex;
const bool isInPrimaryView;
};
+
+ /**
+ * Getter for a view container.
+ * @param viewIndex specifies the tab and the view within that tab.
+ * @return the view container specified in @p viewIndex or nullptr if it doesn't exist.
+ */
+ DolphinViewContainer *viewContainerAt(ViewIndex viewIndex) const;
+
+ /**
+ * Makes the view container specified in @p viewIndex become the active view container within this tab widget.
+ * @param viewIndex Specifies the tab to activate and the view container within the tab to activate.
+ * @return the freshly activated view container or nullptr if there is no view container at @p viewIndex.
+ */
+ DolphinViewContainer *activateViewContainerAt(ViewIndex viewIndex);
+
/**
* Get the position of the view within this widget that is open at @p directory.
* @param directory The URL of the directory we want to find.