aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2021-03-17 09:43:48 +0100
committerFelix Queißner <felix@ib-queissner.de>2021-03-17 09:49:58 +0100
commiteaee38bc03e45c1494b08583e64897dfe72cfe4a (patch)
tree5c2e60cf507a779bfe85e5d6f4b41062eb5fe1e7 /src
parentd2987e47b8b55d0d87bc1ed268b87cb0c1c1b5f6 (diff)
Restores geometry from previous root window.
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp75
1 files changed, 48 insertions, 27 deletions
diff --git a/src/main.cpp b/src/main.cpp
index bd0afb3..8a79d7a 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -696,49 +696,70 @@ int main(int argc, char *argv[])
// Stores the first window from the restored session (if any)
MainWindow * root_window = nullptr;
- if((session_store != nullptr) and (kristall::globals().options.session_restore_behaviour == GenericSettings::RestoreLastSession))
+ if(session_store != nullptr)
{
auto & settings = *session_store;
-
int window_count = settings.beginReadArray("windows");
-
- for(int index = 0; index < window_count; index += 1)
+ if(kristall::globals().options.session_restore_behaviour == GenericSettings::RestoreLastSession)
{
- settings.setArrayIndex(index);
+ for(int index = 0; index < window_count; index += 1)
+ {
+ settings.setArrayIndex(index);
- QVector<NamedUrl> urls;
+ QVector<NamedUrl> urls;
- int tab_count = settings.beginReadArray("tabs");
- for(int i = 0; i < tab_count; i++)
- {
- settings.setArrayIndex(i);
- urls.push_back({
- settings.value("url").toString(),
- settings.value("title").toString()
- });
- }
- settings.endArray();
+ int tab_count = settings.beginReadArray("tabs");
+ for(int i = 0; i < tab_count; i++)
+ {
+ settings.setArrayIndex(i);
+ urls.push_back({
+ settings.value("url").toString(),
+ settings.value("title").toString()
+ });
+ }
+ settings.endArray();
- auto * const window = kristall::openNewWindow(urls);
+ auto * const window = kristall::openNewWindow(urls);
- if (window->tabCount() > 0)
- {
- int tab_index = settings.value("tab_index").toInt();
- window->setCurrentTabIndex(tab_index);
- window->curTab()->reloadPage();
+ 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());
+ }
+ if(settings.contains("geometry") != QVariant {}) {
+ window->restoreGeometry(settings.value("geometry").toByteArray());
+ }
+
+ if(root_window == nullptr)
+ root_window = window;
}
+ }
+ else if(window_count > 0)
+ {
+ // Restore only the main window geometry
+ settings.setArrayIndex(0);
+
+ root_window = kristall::openNewWindow(QVector<QUrl>{});
+
if(settings.contains("state")) {
- window->restoreState(settings.value("state").toByteArray());
+ root_window->restoreState(settings.value("state").toByteArray());
}
if(settings.contains("geometry") != QVariant {}) {
- window->restoreGeometry(settings.value("geometry").toByteArray());
+ root_window->restoreGeometry(settings.value("geometry").toByteArray());
}
- if(root_window == nullptr)
- root_window = window;
+ // If no URLs are to be loaded, we need to manually
+ // add the empty tab here.
+ if(urls.size() == 0) {
+ root_window->addEmptyTab(true, true);
+ }
}
-
settings.endArray();
}