From b8ecc40e8ce9f4b04ef9dd893e3aec0b0e740ad5 Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Thu, 13 Nov 2025 19:48:54 +0100 Subject: [PATCH] Add search clear button to the variable tab --- data/locale/en-US.ini | 1 + lib/variables/variable-tab.cpp | 18 +++++++++++++++++- lib/variables/variable-tab.hpp | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 7410c329..810d225d 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -96,6 +96,7 @@ AdvSceneSwitcher.variableTab.search.all="All columns" AdvSceneSwitcher.variableTab.search.name="Name column" AdvSceneSwitcher.variableTab.search.value="Value column" AdvSceneSwitcher.variableTab.addDock="Add dock" +AdvSceneSwitcher.variableTab.clear="Clear" # Action Queue Tab AdvSceneSwitcher.actionQueueTab.title="Action Queues" diff --git a/lib/variables/variable-tab.cpp b/lib/variables/variable-tab.cpp index aef41e8e..214f40da 100644 --- a/lib/variables/variable-tab.cpp +++ b/lib/variables/variable-tab.cpp @@ -353,12 +353,26 @@ VariableTable::VariableTable(Settings &settings, QWidget *parent) "AdvSceneSwitcher.variableTab.lastChanged.header"), [this]() { openSettingsDialog(this); }), _searchField(new QLineEdit(this)), + _clear(new QPushButton(this)), _searchType(new QComboBox(this)), _regexWidget(new RegexConfigWidget(this)), _addDock(new QCheckBox( obs_module_text("AdvSceneSwitcher.variableTab.addDock"))), _settings(settings) { + _clear->setMaximumWidth(22); + SetButtonIcon(_clear, GetThemeTypeName() == "Light" + ? "theme:Light/close.svg" + : "theme:Dark/close.svg"); + _clear->setToolTip( + obs_module_text("AdvSceneSwitcher.variableTab.clear")); + _clear->setDisabled(_settings.searchString.empty()); + + connect(_clear, &QPushButton::clicked, this, [this]() { + _searchField->setText(""); + _clear->setDisabled(true); + }); + for (const auto &variable : GetVariables()) { auto v = std::static_pointer_cast(variable); AddItemTableRow(Table(), getCellLabels(v.get())); @@ -370,9 +384,10 @@ VariableTable::VariableTable(Settings &settings, QWidget *parent) _searchField->setPlaceholderText(obs_module_text( ("AdvSceneSwitcher.variableTab.search.placeholder"))); _searchField->setText(QString::fromStdString(_settings.searchString)); - connect(_searchField, &QLineEdit::textEdited, this, + connect(_searchField, &QLineEdit::textChanged, this, [this](const QString &text) { _settings.searchString = text.toStdString(); + _clear->setDisabled(text.isEmpty()); Filter(); }); @@ -437,6 +452,7 @@ VariableTable::VariableTable(Settings &settings, QWidget *parent) auto searchLayout = new QHBoxLayout(); searchLayout->addWidget(_searchField); + searchLayout->addWidget(_clear); searchLayout->addWidget(_searchType); searchLayout->addWidget(_regexWidget); searchLayout->addWidget(_addDock); diff --git a/lib/variables/variable-tab.hpp b/lib/variables/variable-tab.hpp index 8f96d6fb..068b8614 100644 --- a/lib/variables/variable-tab.hpp +++ b/lib/variables/variable-tab.hpp @@ -32,6 +32,7 @@ private slots: private: QLineEdit *_searchField; + QPushButton *_clear; QComboBox *_searchType; RegexConfigWidget *_regexWidget; QCheckBox *_addDock;