mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-06-15 21:32:13 -05:00
Reset tab order if config is invalid
This commit is contained in:
parent
bc5a04651f
commit
0fdfe757b4
|
|
@ -4,8 +4,6 @@
|
|||
#include "headers/utility.hpp"
|
||||
#include "headers/version.h"
|
||||
|
||||
constexpr auto tab_count = 17;
|
||||
|
||||
QMetaObject::Connection inactivePluse;
|
||||
|
||||
void AdvSceneSwitcher::on_close_clicked()
|
||||
|
|
@ -365,6 +363,10 @@ int findTabIndex(QTabWidget *tabWidget, int pos)
|
|||
|
||||
void AdvSceneSwitcher::setTabOrder()
|
||||
{
|
||||
if (!switcher->tabOrderValid()) {
|
||||
switcher->resetTabOrder();
|
||||
}
|
||||
|
||||
QTabBar *bar = ui->tabWidget->tabBar();
|
||||
for (int i = 0; i < bar->count(); ++i) {
|
||||
int curPos = findTabIndex(ui->tabWidget, switcher->tabOrder[i]);
|
||||
|
|
@ -493,12 +495,6 @@ void SwitcherData::saveGeneralSettings(obs_data_t *obj)
|
|||
|
||||
obs_data_set_int(obj, "threadPriority", threadPriority);
|
||||
|
||||
// After fresh install of OBS the vector can be empty
|
||||
// as save() might be called before first load()
|
||||
if (tabOrder.size() < tab_count) {
|
||||
resetTabOrder();
|
||||
}
|
||||
|
||||
obs_data_set_int(obj, "generalTabPos", tabOrder[0]);
|
||||
obs_data_set_int(obj, "transitionTabPos", tabOrder[1]);
|
||||
obs_data_set_int(obj, "pauseTabPos", tabOrder[2]);
|
||||
|
|
@ -610,6 +606,7 @@ void SwitcherData::loadGeneralSettings(obs_data_t *obj)
|
|||
obs_data_set_default_int(obj, "sceneGroupTabPos", 15);
|
||||
obs_data_set_default_int(obj, "triggerTabPos", 16);
|
||||
|
||||
tabOrder.clear();
|
||||
tabOrder.emplace_back((int)(obs_data_get_int(obj, "generalTabPos")));
|
||||
tabOrder.emplace_back((int)(obs_data_get_int(obj, "transitionTabPos")));
|
||||
tabOrder.emplace_back((int)(obs_data_get_int(obj, "pauseTabPos")));
|
||||
|
|
@ -641,10 +638,16 @@ void SwitcherData::loadGeneralSettings(obs_data_t *obj)
|
|||
|
||||
bool SwitcherData::tabOrderValid()
|
||||
{
|
||||
auto tmp = tabOrder;
|
||||
std::sort(tmp.begin(), tmp.end());
|
||||
auto it = std::unique(tmp.begin(), tmp.end());
|
||||
return it == tmp.end();
|
||||
auto tmp = std::vector<int>(tab_count);
|
||||
std::iota(tmp.begin(), tmp.end(), 0);
|
||||
|
||||
for (auto &p : tmp) {
|
||||
auto it = std::find(tabOrder.begin(), tabOrder.end(), p);
|
||||
if (it == tabOrder.end()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void SwitcherData::resetTabOrder()
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
constexpr auto default_interval = 300;
|
||||
constexpr auto previous_scene_name = "Previous Scene";
|
||||
constexpr auto current_transition_name = "Current Transition";
|
||||
constexpr auto tab_count = 17;
|
||||
|
||||
typedef enum { NO_SWITCH = 0, SWITCH = 1, RANDOM_SWITCH = 2 } NoMatch;
|
||||
typedef enum { PERSIST = 0, START = 1, STOP = 2 } StartupBehavior;
|
||||
|
|
@ -160,7 +161,7 @@ struct SwitcherData {
|
|||
|
||||
uint32_t threadPriority = QThread::NormalPriority;
|
||||
|
||||
std::vector<int> tabOrder;
|
||||
std::vector<int> tabOrder = std::vector<int>(tab_count);
|
||||
|
||||
bool hotkeysRegistered = false;
|
||||
obs_hotkey_id startHotkey = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user