From 9e5926147606737a87cf17535db1ecbfd2c9a2c5 Mon Sep 17 00:00:00 2001 From: Rafał Lichwała Date: Sat, 29 Nov 2025 13:32:30 +0100 Subject: folderstabssettingspage: add 3 options for closing split view There is one bool setting in Dolphin Interface->Folders&Tabs->Split_view which determines which panel is closed on "Close split view" button click (currently focused or unfocused one). This commit replaces this setting with (enum-based) 3-state combo box. Since now we can set "When closing a split view" action to: - Close the active pane - Close the inactive pane - Close the right pane BUG: 464696 BUG: 186185 --- src/dolphinmainwindow.cpp | 77 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 14 deletions(-) (limited to 'src/dolphinmainwindow.cpp') diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 72ed98f77..9e25f94e8 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -1117,7 +1117,21 @@ void DolphinMainWindow::popoutSplitView() DolphinTabPage *tabPage = m_tabWidget->currentTabPage(); if (!tabPage->splitViewEnabled()) return; - openNewWindow((GeneralSettings::closeActiveSplitView() ? tabPage->activeViewContainer() : tabPage->inactiveViewContainer())->url()); + using Choice = GeneralSettings::EnumCloseSplitViewChoice; + switch (GeneralSettings::closeSplitViewChoice()) { + case Choice::ActiveView: + openNewWindow(tabPage->activeViewContainer()->url()); + break; + case Choice::InactiveView: + openNewWindow(tabPage->inactiveViewContainer()->url()); + break; + case Choice::RightView: + openNewWindow(tabPage->secondaryViewContainer()->url()); + break; + default: + Q_UNREACHABLE(); + } + tabPage->setSplitViewEnabled(false, WithAnimation); updateSplitActions(); } @@ -2805,22 +2819,57 @@ void DolphinMainWindow::updateSplitActions() const DolphinTabPage *tabPage = m_tabWidget->currentTabPage(); if (tabPage->splitViewEnabled()) { - if (GeneralSettings::closeActiveSplitView() ? tabPage->primaryViewActive() : !tabPage->primaryViewActive()) { - m_splitViewAction->setText(i18nc("@action:intoolbar Close left view", "Close")); - m_splitViewAction->setToolTip(i18nc("@info", "Close left view")); - m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-left-close"))); - m_splitViewMenuAction->setText(i18nc("@action:inmenu Close left view", "Close Left View")); - - popoutSplitAction->setText(i18nc("@action:intoolbar Move left view to a new window", "Pop out Left View")); - popoutSplitAction->setToolTip(i18nc("@info", "Move left view to a new window")); - } else { + using Choice = GeneralSettings::EnumCloseSplitViewChoice; + switch (GeneralSettings::closeSplitViewChoice()) { + case Choice::ActiveView: + if (tabPage->primaryViewActive()) { + m_splitViewAction->setText(i18nc("@action:intoolbar Close left view", "Close")); + m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Left View")); + m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-left-close"))); + m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Left View")); + + popoutSplitAction->setText(i18nc("@action:intoolbar Move left split view to a new window", "Pop out Left View")); + popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move left split view to a new window")); + } else { + m_splitViewAction->setText(i18nc("@action:intoolbar Close right view", "Close")); + m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Right View")); + m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-close"))); + m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Right View")); + + popoutSplitAction->setText(i18nc("@action:intoolbar Move right split view to a new window", "Pop out Right View")); + popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move right split view to a new window")); + } + break; + case Choice::InactiveView: + if (!tabPage->primaryViewActive()) { + m_splitViewAction->setText(i18nc("@action:intoolbar Close left view", "Close")); + m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Left View")); + m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-left-close"))); + m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Left View")); + + popoutSplitAction->setText(i18nc("@action:intoolbar Move left split view to a new window", "Pop out Left View")); + popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move left split view to a new window")); + } else { + m_splitViewAction->setText(i18nc("@action:intoolbar Close right view", "Close")); + m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Right View")); + m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-close"))); + m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Right View")); + + popoutSplitAction->setText(i18nc("@action:intoolbar Move right split view to a new window", "Pop out Right View")); + popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move right split view to a new window")); + } + break; + case Choice::RightView: m_splitViewAction->setText(i18nc("@action:intoolbar Close right view", "Close")); - m_splitViewAction->setToolTip(i18nc("@info", "Close right view")); + m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Right View")); m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-close"))); - m_splitViewMenuAction->setText(i18nc("@action:inmenu Close left view", "Close Right View")); + m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Right View")); - popoutSplitAction->setText(i18nc("@action:intoolbar Move right view to a new window", "Pop out Right View")); - popoutSplitAction->setToolTip(i18nc("@info", "Move right view to a new window")); + popoutSplitAction->setText(i18nc("@action:intoolbar Move right split view to a new window", "Pop out Right View")); + popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move right split view to a new window")); + break; + default: + Q_UNREACHABLE(); } popoutSplitAction->setEnabled(true); if (!m_splitViewAction->menu()) { -- cgit v1.3