From 07e2ac3ca01ed81348c7bc351a82834c057b17d3 Mon Sep 17 00:00:00 2001
From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com>
Date: Mon, 16 Mar 2026 19:40:17 +0100
Subject: [PATCH] Fix macro list / macro edit area splitter resizing
When horizontally large widgets (e.g. the Window condition) were part of
the currently selected macro moving the splitter would result in it
either fully hiding the macro list or the macro edit area.
Now the list and edit area can be resized smoothly.
---
forms/advanced-scene-switcher.ui | 2 +-
lib/macro/macro-tab.cpp | 32 ++++++++++++++++++++------------
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/forms/advanced-scene-switcher.ui b/forms/advanced-scene-switcher.ui
index 082ddd5a..64327853 100644
--- a/forms/advanced-scene-switcher.ui
+++ b/forms/advanced-scene-switcher.ui
@@ -597,7 +597,7 @@
Qt::Horizontal
-
+
AdvSceneSwitcher.macroTab.macros
diff --git a/lib/macro/macro-tab.cpp b/lib/macro/macro-tab.cpp
index 8a1b42e6..d5aba05b 100644
--- a/lib/macro/macro-tab.cpp
+++ b/lib/macro/macro-tab.cpp
@@ -670,18 +670,6 @@ void AdvSceneSwitcher::SetupMacroTab()
SLOT(HighlightOnChange()));
onChangeHighlightTimer.start();
- // Reserve more space for macro edit area than for the macro list
- ui->macroListMacroEditSplitter->setStretchFactor(0, 1);
- ui->macroListMacroEditSplitter->setStretchFactor(1, 4);
-
- if (switcher->saveWindowGeo) {
- if (shouldRestoreSplitter(
- switcher->macroListMacroEditSplitterPosition)) {
- ui->macroListMacroEditSplitter->setSizes(
- switcher->macroListMacroEditSplitterPosition);
- }
- }
-
SetupMacroSearchWidgets(ui->macroSearchLayout, ui->macroSearchText,
ui->macroSearchClear, ui->macroSearchType,
ui->macroSearchRegex,
@@ -705,6 +693,26 @@ void AdvSceneSwitcher::SetupMacroTab()
ui->actionTriggerMode->addItem(obs_module_text(name),
static_cast(mode));
}
+
+ ui->macroListBox->setSizePolicy(QSizePolicy::Ignored,
+ QSizePolicy::Preferred);
+ ui->macroListBox->setMinimumWidth(0);
+ ui->macroEditGroup->setSizePolicy(QSizePolicy::Ignored,
+ QSizePolicy::Preferred);
+ ui->macroEditGroup->setMinimumWidth(0);
+
+ if (shouldRestoreSplitter(
+ switcher->macroListMacroEditSplitterPosition)) {
+ ui->macroListMacroEditSplitter->setSizes(
+ switcher->macroListMacroEditSplitterPosition);
+ } else {
+ QTimer::singleShot(0, this, [this]() {
+ const auto totalWidth =
+ ui->macroListMacroEditSplitter->width();
+ ui->macroListMacroEditSplitter->setSizes(
+ {totalWidth / 5, totalWidth * 4 / 5});
+ });
+ }
}
void AdvSceneSwitcher::ShowMacroContextMenu(const QPoint &pos)