From 1328896801157d44d050b0737862bd4f97a4daf6 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Fri, 4 Feb 2022 22:13:36 +0100 Subject: [PATCH] Reopen last opened tab in current session Will reset to General tab on startup / scene collection change --- src/advanced-scene-switcher.cpp | 2 ++ src/general.cpp | 10 ++++++++++ src/headers/advanced-scene-switcher.hpp | 1 + src/headers/switcher-data-structs.hpp | 1 + 4 files changed, 14 insertions(+) diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp index 51b14763..ae61220a 100644 --- a/src/advanced-scene-switcher.cpp +++ b/src/advanced-scene-switcher.cpp @@ -39,6 +39,7 @@ AdvSceneSwitcher::~AdvSceneSwitcher() { if (switcher) { switcher->settingsWindowOpened = false; + switcher->lastOpenedTab = ui->tabWidget->currentIndex(); } } @@ -86,6 +87,7 @@ void AdvSceneSwitcher::loadUI() setupMacroTab(); setTabOrder(); + setCurrentTab(); restoreWindowGeo(); checkFirstTimeSetup(); diff --git a/src/general.cpp b/src/general.cpp index e719551e..ec3e289f 100644 --- a/src/general.cpp +++ b/src/general.cpp @@ -460,6 +460,13 @@ void AdvSceneSwitcher::setTabOrder() connect(bar, &QTabBar::tabMoved, this, &AdvSceneSwitcher::on_tabMoved); } +void AdvSceneSwitcher::setCurrentTab() +{ + if (switcher->lastOpenedTab >= 0) { + ui->tabWidget->setCurrentIndex(switcher->lastOpenedTab); + } +} + void AdvSceneSwitcher::restoreWindowGeo() { if (switcher->saveWindowGeo && windowPosValid(switcher->windowPos)) { @@ -517,6 +524,9 @@ void SwitcherData::loadSettings(obs_data_t *obj) loadSceneTriggers(obj); loadGeneralSettings(obj); loadHotkeys(obj); + + // Reset on startup and scene collection change + switcher->lastOpenedTab = -1; } void SwitcherData::saveSettings(obs_data_t *obj) diff --git a/src/headers/advanced-scene-switcher.hpp b/src/headers/advanced-scene-switcher.hpp index db4d01d1..e70cf2f4 100644 --- a/src/headers/advanced-scene-switcher.hpp +++ b/src/headers/advanced-scene-switcher.hpp @@ -78,6 +78,7 @@ public: void setupNetworkTab(); void setupMacroTab(); void setTabOrder(); + void setCurrentTab(); void restoreWindowGeo(); void checkFirstTimeSetup(); diff --git a/src/headers/switcher-data-structs.hpp b/src/headers/switcher-data-structs.hpp index cfb8e47e..642fd2fa 100644 --- a/src/headers/switcher-data-structs.hpp +++ b/src/headers/switcher-data-structs.hpp @@ -77,6 +77,7 @@ struct SwitcherData { SwitcherThread *th = nullptr; bool settingsWindowOpened = false; + int lastOpenedTab = -1; bool firstBoot = true; std::condition_variable cv;