mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Fixing bugs in new folders in tabs feature
Summary: Fixing bug where urls in secondary view containers would not be considered for the open new folders in tabs feature. Test Plan: Manual testing. Testing for no regressions. Testing that URL is found if in secondary view container Reviewers: elvisangelaccio Reviewed By: elvisangelaccio Subscribers: kfm-devel, ngraham Tags: #dolphin Differential Revision: https://phabricator.kde.org/D23655
This commit is contained in:
parent
56b3059f77
commit
a640371643
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue