From 1f8ecb6d05976e6dc8be01ba1a6f3068ed351971 Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Wed, 17 Mar 2021 16:01:52 +1100 Subject: sessions: add 'lazyloading' for restored tabs --- src/browsertab.hpp | 2 ++ src/main.cpp | 12 ++++++++---- src/mainwindow.cpp | 19 +++++++++++++++++-- src/mainwindow.hpp | 5 ++++- 4 files changed, 31 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/browsertab.hpp b/src/browsertab.hpp index 16bbfab..337f0f3 100644 --- a/src/browsertab.hpp +++ b/src/browsertab.hpp @@ -250,6 +250,8 @@ public: bool was_read_from_cache = false; + bool lazy_loading = false; + RequestState request_state; DocumentStyle current_style; diff --git a/src/main.cpp b/src/main.cpp index b51dcb1..41f994c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -347,7 +347,7 @@ MainWindow * kristall::openNewWindow(QVector const & urls) for(int i = 0; i < urls.length(); i++) { - window->addNewTab((i == 0), urls.at(i), ""); + window->addNewTab((i == 0), urls.at(i), true, ""); } window->show(); @@ -362,7 +362,7 @@ MainWindow * kristall::openNewWindow(QVector const & urls) for(int i = 0; i < urls.length(); i++) { - window->addNewTab((i == 0), urls.at(i).location, urls.at(i).title); + window->addNewTab((i == 0), urls.at(i).location, true, urls.at(i).title); } window->show(); @@ -721,8 +721,12 @@ int main(int argc, char *argv[]) auto * const window = kristall::openNewWindow(urls); - int tab_index = settings.value("tab_index").toInt(); - window->setCurrentTabIndex(tab_index); + if (window->tabCount() > 0) + { + int tab_index = settings.value("tab_index").toInt(); + window->setCurrentTabIndex(tab_index); + window->curTab()->reloadPage(); + } if(settings.contains("state")) { window->restoreState(settings.value("state").toByteArray()); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 42b7831..9f7eb21 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -160,13 +160,23 @@ BrowserTab * MainWindow::addEmptyTab(bool focus_new, bool load_default) return tab; } -BrowserTab * MainWindow::addNewTab(bool focus_new, QUrl const & url, QString defaultTitle) +BrowserTab * MainWindow::addNewTab(bool focus_new, QUrl const & url, bool lazyload, QString defaultTitle) { auto tab = addEmptyTab(focus_new, false); - tab->navigateTo(url, BrowserTab::PushImmediate); + + if (lazyload) + { + tab->current_location = url; + tab->lazy_loading = true; + } + else + { + tab->navigateTo(url, BrowserTab::PushImmediate); + } if (!defaultTitle.isEmpty()) { + tab->page_title = defaultTitle; emit tab->titleChanged(defaultTitle); } @@ -374,6 +384,11 @@ void MainWindow::on_browser_tabs_currentChanged(int index) tab->refreshFavButton(); } + if (tab->lazy_loading) + { + tab->reloadPage(); + } + this->setRequestState(tab->request_state); } else { this->ui->outline_view->setModel(nullptr); diff --git a/src/mainwindow.hpp b/src/mainwindow.hpp index f3e1442..4f482b8 100644 --- a/src/mainwindow.hpp +++ b/src/mainwindow.hpp @@ -31,7 +31,10 @@ public: ~MainWindow(); BrowserTab * addEmptyTab(bool focus_new, bool load_default); - BrowserTab * addNewTab(bool focus_new, QUrl const & url, QString defaultTitle=""); + BrowserTab * addNewTab(bool focus_new, + QUrl const & url, + bool lazyload=false, + QString defaultTitle=""); BrowserTab * curTab() const; BrowserTab * tabAt(int index) const; int tabCount() const; -- cgit v1.2.3