mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
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
This commit is contained in:
parent
a32373e587
commit
1755380208
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue