diff options
| author | Mike Skec <skec@protonmail.ch> | 2021-03-17 16:01:52 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2021-03-17 09:49:58 +0100 |
| commit | 1f8ecb6d05976e6dc8be01ba1a6f3068ed351971 (patch) | |
| tree | beacfe2d91914136d08690b583398e6497314e47 /src | |
| parent | 489512210b80e0bb441df27ead735722c9c68da2 (diff) | |
| download | kristall-1f8ecb6d05976e6dc8be01ba1a6f3068ed351971.tar.gz | |
sessions: add 'lazyloading' for restored tabs
Diffstat (limited to 'src')
| -rw-r--r-- | src/browsertab.hpp | 2 | ||||
| -rw-r--r-- | src/main.cpp | 12 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 19 | ||||
| -rw-r--r-- | src/mainwindow.hpp | 5 |
4 files changed, 31 insertions, 7 deletions
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<QUrl> 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<PageMetadata> 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; |
