┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp2
-rw-r--r--src/dolphintabwidget.cpp29
-rw-r--r--src/dolphintabwidget.h8
3 files changed, 25 insertions, 14 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 19f790662..c9ed9c5cd 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -2089,7 +2089,7 @@ void DolphinMainWindow::UndoUiInterface::jobError(KIO::Job* job)
bool DolphinMainWindow::isUrlOpen(const QString& url)
{
- if (m_tabWidget->getIndexByUrl(QUrl::fromUserInput((url))) >= 0) {
+ if (m_tabWidget->getIndexByUrl(QUrl::fromUserInput((url))).first >= 0) {
return true;
} else {
return false;
diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp
index defd089c1..7928c510e 100644
--- a/src/dolphintabwidget.cpp
+++ b/src/dolphintabwidget.cpp
@@ -186,9 +186,15 @@ void DolphinTabWidget::openDirectories(const QList<QUrl>& dirs, bool splitView)
QList<QUrl>::const_iterator it = dirs.constBegin();
while (it != dirs.constEnd()) {
const QUrl& primaryUrl = *(it++);
- const int index = getIndexByUrl(primaryUrl);
- if (index >= 0) {
- setCurrentIndex(index);
+ const QPair<int, bool> viewLocation = getIndexByUrl(primaryUrl);
+ if (viewLocation.first >= 0) {
+ setCurrentIndex(viewLocation.first);
+ const auto tabPage = tabPageAt(viewLocation.first);
+ if (viewLocation.second) {
+ tabPage->primaryViewContainer()->setActive(true);
+ } else {
+ tabPage->secondaryViewContainer()->setActive(true);
+ }
continue;
}
if (splitView && (it != dirs.constEnd())) {
@@ -381,16 +387,17 @@ QString DolphinTabWidget::tabName(DolphinTabPage* tabPage) const
return name.replace('&', QLatin1String("&&"));
}
-int DolphinTabWidget::getIndexByUrl(const QUrl& url) const
+QPair<int, bool> DolphinTabWidget::getIndexByUrl(const QUrl& url) const
{
for (int i = 0; i < count(); i++) {
- // Conversion to display string is necessary to deal with the '~' alias.
- // i.e. to acknowledge that ~/ is equivalent to /home/user/
- const QUrl tabUrl = tabPageAt(i)->activeViewContainer()->url();
- if (url == tabUrl ||
- url.toDisplayString(QUrl::StripTrailingSlash) == tabUrl.toDisplayString(QUrl::StripTrailingSlash)) {
- return i;
+ const auto tabPage = tabPageAt(i);
+ if (url == tabPage->primaryViewContainer()->url()) {
+ return qMakePair(i, true);
+ }
+
+ if (tabPage->splitViewEnabled() && url == tabPage->secondaryViewContainer()->url()) {
+ return qMakePair(i, false);
}
}
- return -1;
+ return qMakePair(-1, false);
}
diff --git a/src/dolphintabwidget.h b/src/dolphintabwidget.h
index 3e8301725..7eb001b21 100644
--- a/src/dolphintabwidget.h
+++ b/src/dolphintabwidget.h
@@ -80,9 +80,13 @@ public:
/**
* @param url The URL that we would like
- * @return index of the tab with the desired URL. returns -1 if not found
+ * @return a QPair with first containing the index of the tab with the
+ * desired URL or -1 if not found. Second says true if URL is in primary
+ * view container, false otherwise. False means the URL is in the secondary
+ * view container, unless first == -1. In that case the value of second
+ * is meaningless.
*/
- int getIndexByUrl(const QUrl& url) const;
+ QPair<int, bool> getIndexByUrl(const QUrl& url) const;
signals:
/**