aboutsummaryrefslogtreecommitdiff
path: root/src/browser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/browser.cpp')
-rw-r--r--src/browser.cpp44
1 files changed, 33 insertions, 11 deletions
diff --git a/src/browser.cpp b/src/browser.cpp
index 02d5bc9..3c39ec7 100644
--- a/src/browser.cpp
+++ b/src/browser.cpp
@@ -218,22 +218,44 @@ void Browser::showWidget(QWidget *widget, MainWindow *where) const
where->addDockWidget(Qt::RightDockWidgetArea, widget);
}
-MainWindow *Browser::createWindow()
+void Browser::open(const QVector<Session::MainWindow> &data, bool merge)
{
- // the window will delete itself when it closes, so we don't need to delete it
- auto *window = new MainWindow();
- connect(window->addressBar, &AddressBar::complete, m_bookmarks.get(), &BookmarksWidget::search);
+ if(data.count() == 0 && merge) {
+ m_windows.at(0)->createTab(QUrl());
+ }
+
+ if(data.count() == 1 && m_windows.count() >= 1 && merge) {
+ const auto windowData = data.at(0);
+ auto *window = m_windows.at(0);
+
+ if(windowData.subwindows.count() == 1) {
+ const auto subwindowData = windowData.subwindows.at(0);
+ for(const auto &tab : subwindowData.tabs) {
+ window->createTab(tab);
+ }
+ } else {
+ for(const auto &data : windowData.subwindows) {
+ window->createSubWindow(data);
+ }
+ }
- for(auto *info : qAsConst(m_plugins)) {
- addPluginTo(info, window);
+ return;
}
- m_windows.append(window);
- connect(window, &MainWindow::destroyed, this, [this, window]() {
- m_windows.removeOne(window);
- });
+ for(const auto &windowData : data) {
+ // the window will delete itself when it closes, so we don't need to delete it
+ auto *window = new MainWindow(windowData);
+ connect(window->addressBar, &AddressBar::complete, m_bookmarks.get(), &BookmarksWidget::search);
- return window;
+ for(auto *info : qAsConst(m_plugins)) {
+ addPluginTo(info, window);
+ }
+
+ m_windows.append(window);
+ connect(window, &MainWindow::destroyed, this, [this, window]() {
+ m_windows.removeOne(window);
+ });
+ }
}
void Browser::addPluginTo(PluginInfo *info, MainWindow *window)