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())) {
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);
}
/**
* @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:
/**