aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-03-17 16:01:52 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-03-17 09:49:58 +0100
commit1f8ecb6d05976e6dc8be01ba1a6f3068ed351971 (patch)
treebeacfe2d91914136d08690b583398e6497314e47 /src
parent489512210b80e0bb441df27ead735722c9c68da2 (diff)
downloadkristall-1f8ecb6d05976e6dc8be01ba1a6f3068ed351971.tar.gz
sessions: add 'lazyloading' for restored tabs
Diffstat (limited to 'src')
-rw-r--r--src/browsertab.hpp2
-rw-r--r--src/main.cpp12
-rw-r--r--src/mainwindow.cpp19
-rw-r--r--src/mainwindow.hpp5
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;