diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2021-04-04 14:14:40 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2021-04-04 15:19:42 +0200 |
commit | cb14d193518487ecc9867eb4735538f63ba88dad (patch) | |
tree | 8a49251f8650b680957ad89bb8f4fb85d10ee9a9 /kde-apps/dolphin/files/dolphin-20.12.3-fix-session-restore-w-o-tabs.patch | |
parent | kde-frameworks/syntax-highlighting: Drop 5.79.1 and 5.80.0 (r0) (diff) | |
download | gentoo-cb14d193518487ecc9867eb4735538f63ba88dad.tar.gz gentoo-cb14d193518487ecc9867eb4735538f63ba88dad.tar.bz2 gentoo-cb14d193518487ecc9867eb4735538f63ba88dad.zip |
kde-apps/dolphin: Don't re-open already-open URLs w/ session-restore
Upstream commit 175538020824355115cd98637ce83ecc53badd44
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=434911
Package-Manager: Portage-3.0.18, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'kde-apps/dolphin/files/dolphin-20.12.3-fix-session-restore-w-o-tabs.patch')
-rw-r--r-- | kde-apps/dolphin/files/dolphin-20.12.3-fix-session-restore-w-o-tabs.patch | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/kde-apps/dolphin/files/dolphin-20.12.3-fix-session-restore-w-o-tabs.patch b/kde-apps/dolphin/files/dolphin-20.12.3-fix-session-restore-w-o-tabs.patch new file mode 100644 index 000000000000..9605bead03cf --- /dev/null +++ b/kde-apps/dolphin/files/dolphin-20.12.3-fix-session-restore-w-o-tabs.patch @@ -0,0 +1,70 @@ +From 175538020824355115cd98637ce83ecc53badd44 Mon Sep 17 00:00:00 2001 +From: Nate Graham <nate@kde.org> +Date: Thu, 18 Mar 2021 13:42:59 -0600 +Subject: [PATCH] Don't re-open already-open URLs when using session-restore + feature + +If Dolphin would be asked to open a location that is already open, don't +open it again in a new tab; instead switch to that view. Supports tabs +and split view. + +BUG: 434911 +FIXED-IN: 21.04 +--- + src/dolphintabwidget.cpp | 24 ++++++++++++++++++------ + 1 file changed, 18 insertions(+), 6 deletions(-) + +diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp +index d61a9f74f..17fa0ff4e 100644 +--- a/src/dolphintabwidget.cpp ++++ b/src/dolphintabwidget.cpp +@@ -186,14 +186,20 @@ void DolphinTabWidget::openDirectories(const QList<QUrl>& dirs, bool splitView) + { + Q_ASSERT(dirs.size() > 0); + ++ bool somethingWasAlreadyOpen = false; ++ + QList<QUrl>::const_iterator it = dirs.constBegin(); + while (it != dirs.constEnd()) { + const QUrl& primaryUrl = *(it++); + const QPair<int, bool> indexInfo = indexByUrl(primaryUrl); + const int index = indexInfo.first; + const bool isInPrimaryView = indexInfo.second; ++ ++ // When the user asks for a URL that's already open, activate it instead ++ // of opening a second copy + if (index >= 0) { +- setCurrentIndex(index); ++ somethingWasAlreadyOpen = true; ++ activateTab(index); + const auto tabPage = tabPageAt(index); + if (isInPrimaryView) { + tabPage->primaryViewContainer()->setActive(true); +@@ -204,13 +210,19 @@ void DolphinTabWidget::openDirectories(const QList<QUrl>& dirs, bool splitView) + // Required for updateViewState() call in openFiles() to work as expected + // If there is a selection, updateViewState() calls are effectively a no-op + tabPage->activeViewContainer()->view()->clearSelection(); +- continue; +- } +- if (splitView && (it != dirs.constEnd())) { ++ } else if (splitView) { + const QUrl& secondaryUrl = *(it++); +- openNewActivatedTab(primaryUrl, secondaryUrl); ++ if (somethingWasAlreadyOpen) { ++ openNewTab(primaryUrl, secondaryUrl); ++ } else { ++ openNewActivatedTab(primaryUrl, secondaryUrl); ++ } + } else { +- openNewActivatedTab(primaryUrl); ++ if (somethingWasAlreadyOpen) { ++ openNewTab(primaryUrl); ++ } else { ++ openNewActivatedTab(primaryUrl); ++ } + } + } + } +-- +GitLab + |