diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini
index 8930d0d0..a53bb8e4 100644
--- a/data/locale/en-US.ini
+++ b/data/locale/en-US.ini
@@ -126,6 +126,8 @@ AdvSceneSwitcher.macroTab.currentDockButtonText.unpause="Unpause button text:"
AdvSceneSwitcher.macroTab.currentDockStatusText.true="Conditions true text:"
AdvSceneSwitcher.macroTab.currentDockStatusText.false="Conditions false text:"
AdvSceneSwitcher.macroTab.currentDockHighlightIfExecuted="Highlight dock if macro actions were recently executed"
+AdvSceneSwitcher.macroTab.toggleElseActions.hide.tooltip="Hide else actions"
+AdvSceneSwitcher.macroTab.toggleElseActions.show.tooltip="Show else actions"
AdvSceneSwitcher.macroDock.pause="Pause"
AdvSceneSwitcher.macroDock.unpause="Unpause"
diff --git a/data/res/images/DarkNotEqual.svg b/data/res/images/DarkNotEqual.svg
new file mode 100644
index 00000000..36dc81c0
--- /dev/null
+++ b/data/res/images/DarkNotEqual.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/data/res/images/LightNotEqual.svg b/data/res/images/LightNotEqual.svg
new file mode 100644
index 00000000..41aa710b
--- /dev/null
+++ b/data/res/images/LightNotEqual.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/forms/advanced-scene-switcher.ui b/forms/advanced-scene-switcher.ui
index 9a37330c..d5662a15 100644
--- a/forms/advanced-scene-switcher.ui
+++ b/forms/advanced-scene-switcher.ui
@@ -1275,6 +1275,22 @@
+ -
+
+
+
+ 22
+ 16777215
+
+
+
+ true
+
+
+ true
+
+
+
diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp
index 596577ce..d633192f 100644
--- a/src/advanced-scene-switcher.cpp
+++ b/src/advanced-scene-switcher.cpp
@@ -115,6 +115,23 @@ void AdvSceneSwitcher::LoadUI()
loading = false;
}
+bool AdvSceneSwitcher::eventFilter(QObject *obj, QEvent *event)
+{
+ auto eventType = event->type();
+ if (obj == ui->macroElseActions && eventType == QEvent::Resize) {
+ QResizeEvent *resizeEvent = static_cast(event);
+
+ if (resizeEvent->size().height() == 0) {
+ SetElseActionsStateToHidden();
+ return QDialog::eventFilter(obj, event);
+ }
+
+ SetElseActionsStateToVisible();
+ }
+
+ return QDialog::eventFilter(obj, event);
+}
+
/******************************************************************************
* Saving and loading
******************************************************************************/
diff --git a/src/advanced-scene-switcher.hpp b/src/advanced-scene-switcher.hpp
index fcd9f892..71f50f04 100644
--- a/src/advanced-scene-switcher.hpp
+++ b/src/advanced-scene-switcher.hpp
@@ -39,6 +39,9 @@ public:
void RestoreWindowGeo();
void CheckFirstTimeSetup();
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) override;
+
/* --- Begin of general tab section --- */
public:
void SetupGeneralTab();
@@ -115,6 +118,7 @@ public slots:
void on_actionUp_clicked();
void on_actionDown_clicked();
void on_actionBottom_clicked();
+ void on_toggleElseActions_clicked();
void on_elseActionAdd_clicked();
void on_elseActionRemove_clicked();
void on_elseActionTop_clicked();
@@ -146,6 +150,8 @@ public slots:
void MaximizeElseActions();
void MinimizeConditions();
void MaximizeConditions();
+ void SetElseActionsStateToHidden();
+ void SetElseActionsStateToVisible();
void MacroActionSelectionChanged(int idx);
void MacroActionReorder(int to, int target);
void AddMacroAction(int idx);
@@ -334,7 +340,7 @@ public slots:
void on_timeUp_clicked();
void on_timeDown_clicked();
- // Video tab
+ // Audio tab
public:
void SetupAudioTab();
public slots:
diff --git a/src/macro-core/macro-tab.cpp b/src/macro-core/macro-tab.cpp
index f4409c56..500fe507 100644
--- a/src/macro-core/macro-tab.cpp
+++ b/src/macro-core/macro-tab.cpp
@@ -700,8 +700,7 @@ void AdvSceneSwitcher::MacroSelectionAboutToChange()
// actions nor elseActions being visible when the condition <-> action
// splitter is moved
if (elsePos[0] == 0 && elsePos[1] == 0) {
- macro->SetElseActionSplitterPosition(QList()
- << 999999 << 0);
+ maximizeFirstSplitterEntry(ui->macroElseActionSplitter);
return;
}
macro->SetElseActionSplitterPosition(
@@ -790,6 +789,8 @@ bool shouldRestoreSplitter(const QList &pos)
void AdvSceneSwitcher::SetupMacroTab()
{
+ ui->macroElseActions->installEventFilter(this);
+
if (switcher->macros.size() == 0 && !switcher->disableHints) {
addPulse = PulseWidget(ui->macroAdd, QColor(Qt::green));
}
@@ -862,6 +863,8 @@ void AdvSceneSwitcher::SetupMacroTab()
SetButtonIcon(ui->conditionTop, (pathPrefix + "DoubleUp.svg").c_str());
SetButtonIcon(ui->conditionBottom,
(pathPrefix + "DoubleDown.svg").c_str());
+ SetButtonIcon(ui->toggleElseActions,
+ (pathPrefix + "NotEqual.svg").c_str());
// Reserve more space for macro edit area than for the macro list
ui->macroListMacroEditSplitter->setStretchFactor(0, 1);
@@ -1100,6 +1103,31 @@ void AdvSceneSwitcher::MaximizeConditions()
MinimizeActions();
}
+void AdvSceneSwitcher::on_toggleElseActions_clicked()
+{
+ auto elsePosition = ui->macroElseActionSplitter->sizes();
+ if (elsePosition[1] == 0) {
+ centerSplitterPosition(ui->macroElseActionSplitter);
+ return;
+ }
+
+ maximizeFirstSplitterEntry(ui->macroElseActionSplitter);
+}
+
+void AdvSceneSwitcher::SetElseActionsStateToHidden()
+{
+ ui->toggleElseActions->setToolTip(obs_module_text(
+ "AdvSceneSwitcher.macroTab.toggleElseActions.show.tooltip"));
+ ui->toggleElseActions->setChecked(false);
+}
+
+void AdvSceneSwitcher::SetElseActionsStateToVisible()
+{
+ ui->toggleElseActions->setToolTip(obs_module_text(
+ "AdvSceneSwitcher.macroTab.toggleElseActions.hide.tooltip"));
+ ui->toggleElseActions->setChecked(true);
+}
+
bool AdvSceneSwitcher::MacroTabIsInFocus()
{
return isActiveWindow() && isAncestorOf(focusWidget()) &&