diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2021-03-17 09:43:48 +0100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2021-03-17 09:49:58 +0100 |
| commit | eaee38bc03e45c1494b08583e64897dfe72cfe4a (patch) | |
| tree | 5c2e60cf507a779bfe85e5d6f4b41062eb5fe1e7 /src | |
| parent | d2987e47b8b55d0d87bc1ed268b87cb0c1c1b5f6 (diff) | |
Restores geometry from previous root window.
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cpp | 75 |
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(); } |
