diff --git a/src/lib/app/browserwindow.h b/src/lib/app/browserwindow.h --- a/src/lib/app/browserwindow.h +++ b/src/lib/app/browserwindow.h @@ -77,7 +77,7 @@ friend FALKON_EXPORT QDataStream &operator>>(QDataStream &stream, SavedWindow &window); }; - explicit BrowserWindow(Qz::BrowserWindowType type, const QUrl &url = QUrl()); + explicit BrowserWindow(Qz::BrowserWindowType type, QList urls = QList()); ~BrowserWindow(); void setStartTab(WebTab* tab); @@ -196,7 +196,7 @@ QHash saveUiState(); void restoreUiState(const QHash &state); - QUrl m_startUrl; + QList m_startUrls; QUrl m_homepage; Qz::BrowserWindowType m_windowType; WebTab* m_startTab; diff --git a/src/lib/app/browserwindow.cpp b/src/lib/app/browserwindow.cpp --- a/src/lib/app/browserwindow.cpp +++ b/src/lib/app/browserwindow.cpp @@ -189,9 +189,9 @@ return stream; } -BrowserWindow::BrowserWindow(Qz::BrowserWindowType type, const QUrl &startUrl) +BrowserWindow::BrowserWindow(Qz::BrowserWindowType type, const QList startUrls) : QMainWindow(nullptr) - , m_startUrl(startUrl) + , m_startUrls(startUrls) , m_windowType(type) , m_startTab(nullptr) , m_startPage(nullptr) @@ -298,8 +298,8 @@ break; } - if (!m_startUrl.isEmpty()) { - startUrl = m_startUrl; + if (!m_startUrls.isEmpty()) { + startUrl = m_startUrls.takeFirst(); addTab = true; } @@ -317,6 +317,11 @@ if (addTab) { m_tabWidget->addView(startUrl, Qz::NT_CleanSelectedTabAtTheEnd); + for(const QUrl &url : qAsConst(m_startUrls)) { + m_tabWidget->addView(url, Qz::NT_NotSelectedTabAtTheEnd); + } + m_startUrls.clear(); + if (startUrl.isEmpty() || startUrl.toString() == QLatin1String("falkon:speeddial")) { locationBar()->setFocus(); } diff --git a/src/lib/app/commandlineoptions.cpp b/src/lib/app/commandlineoptions.cpp --- a/src/lib/app/commandlineoptions.cpp +++ b/src/lib/app/commandlineoptions.cpp @@ -198,20 +198,19 @@ m_actions.append(pair); } - if (parser.positionalArguments().isEmpty()) - return; - - QString url = parser.positionalArguments().constLast(); - QFileInfo fileInfo(url); - - if (fileInfo.exists()) { - url = fileInfo.absoluteFilePath(); - } - - if (!url.isEmpty() && !url.startsWith(QLatin1Char('-'))) { - ActionPair pair; - pair.action = Qz::CL_OpenUrl; - pair.text = url; - m_actions.append(pair); + const QStringList args = parser.positionalArguments(); + for (QString url : args) { + QFileInfo fileInfo(url); + + if (fileInfo.exists()) { + url = fileInfo.absoluteFilePath(); + } + + if (!url.isEmpty() && !url.startsWith(QLatin1Char('-'))) { + ActionPair pair; + pair.action = Qz::CL_OpenUrl; + pair.text = url; + m_actions.append(pair); + } } } diff --git a/src/lib/app/mainapplication.h b/src/lib/app/mainapplication.h --- a/src/lib/app/mainapplication.h +++ b/src/lib/app/mainapplication.h @@ -79,7 +79,8 @@ QList windows() const; BrowserWindow* getWindow() const; - BrowserWindow* createWindow(Qz::BrowserWindowType type, const QUrl &startUrl = QUrl()); + BrowserWindow* createWindow(Qz::BrowserWindowType type, const QUrl &startUrl); + BrowserWindow* createWindow(Qz::BrowserWindowType type, QList startUrls = QList()); AfterLaunch afterLaunch() const; diff --git a/src/lib/app/mainapplication.cpp b/src/lib/app/mainapplication.cpp --- a/src/lib/app/mainapplication.cpp +++ b/src/lib/app/mainapplication.cpp @@ -151,7 +151,7 @@ } #endif - QUrl startUrl; + QList startUrls; QString startProfile; QStringList messages; @@ -194,15 +194,15 @@ newInstance = true; break; case Qz::CL_OpenUrlInCurrentTab: - startUrl = QUrl::fromUserInput(pair.text); + startUrls.append(QUrl::fromUserInput(pair.text)); messages.append("ACTION:OpenUrlInCurrentTab" + pair.text); break; case Qz::CL_OpenUrlInNewWindow: - startUrl = QUrl::fromUserInput(pair.text); + startUrls.append(QUrl::fromUserInput(pair.text)); messages.append("ACTION:OpenUrlInNewWindow" + pair.text); break; case Qz::CL_OpenUrl: - startUrl = QUrl::fromUserInput(pair.text); + startUrls.append(QUrl::fromUserInput(pair.text)); messages.append("URL:" + pair.text); break; case Qz::CL_ExitAction: @@ -341,7 +341,7 @@ if (!noAddons) m_plugins->loadPlugins(); - BrowserWindow* window = createWindow(Qz::BW_FirstAppWindow, startUrl); + BrowserWindow *window = createWindow(Qz::BW_FirstAppWindow, std::move(startUrls)); connect(window, SIGNAL(startingCompleted()), this, SLOT(restoreOverrideCursor())); connect(this, &QApplication::focusChanged, this, &MainApplication::onFocusChanged); @@ -440,12 +440,17 @@ } BrowserWindow* MainApplication::createWindow(Qz::BrowserWindowType type, const QUrl &startUrl) +{ + return createWindow(type, QList({startUrl})); +} + +BrowserWindow* MainApplication::createWindow(Qz::BrowserWindowType type, QList startUrls) { if (windowCount() == 0 && type != Qz::BW_MacFirstWindow) { type = Qz::BW_FirstAppWindow; } - BrowserWindow* window = new BrowserWindow(type, startUrl); + BrowserWindow *window = new BrowserWindow(type, startUrls); connect(window, &QObject::destroyed, this, &MainApplication::windowDestroyed); m_windows.prepend(window);