diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index f7dc4d746..921ebc5b8 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -71,6 +71,7 @@ PasteDuplicate="Paste (Duplicate)"
RemuxRecordings="Remux Recordings"
Next="Next"
Back="Back"
+Defaults="Defaults"
# warning if program already open
AlreadyRunning.Title="OBS is already running"
diff --git a/UI/forms/OBSBasicFilters.ui b/UI/forms/OBSBasicFilters.ui
index c53fe6750..b25d5d373 100644
--- a/UI/forms/OBSBasicFilters.ui
+++ b/UI/forms/OBSBasicFilters.ui
@@ -412,12 +412,9 @@
-
-
-
- Close
-
-
- false
+
+
+ QDialogButtonBox::Reset|QDialogButtonBox::Close
@@ -446,21 +443,5 @@
-
- close
- clicked()
- OBSBasicFilters
- accept()
-
-
- 811
- 701
-
-
- 722
- 727
-
-
-
diff --git a/UI/window-basic-filters.cpp b/UI/window-basic-filters.cpp
index 744e3f7ee..1f017ddfa 100644
--- a/UI/window-basic-filters.cpp
+++ b/UI/window-basic-filters.cpp
@@ -87,6 +87,15 @@ OBSBasicFilters::OBSBasicFilters(QWidget *parent, OBSSource source_)
SLOT(EffectFilterNameEdited(QWidget*,
QAbstractItemDelegate::EndEditHint)));
+ connect(ui->buttonBox->button(QDialogButtonBox::Close),
+ SIGNAL(clicked()), this, SLOT(close()));
+
+ ui->buttonBox->button(QDialogButtonBox::Reset)->setText(
+ QTStr("Defaults"));
+
+ connect(ui->buttonBox->button(QDialogButtonBox::Reset),
+ SIGNAL(clicked()), this, SLOT(ResetFilters()));
+
uint32_t flags = obs_source_get_output_flags(source);
bool audio = (flags & OBS_SOURCE_AUDIO) != 0;
bool audioOnly = (flags & OBS_SOURCE_VIDEO) == 0;
@@ -573,6 +582,7 @@ void OBSBasicFilters::on_moveAsyncFilterDown_clicked()
void OBSBasicFilters::on_asyncFilters_GotFocus()
{
UpdatePropertiesView(ui->asyncFilters->currentRow(), true);
+ isAsync = true;
}
void OBSBasicFilters::on_asyncFilters_currentRowChanged(int row)
@@ -614,6 +624,7 @@ void OBSBasicFilters::on_moveEffectFilterDown_clicked()
void OBSBasicFilters::on_effectFilters_GotFocus()
{
UpdatePropertiesView(ui->effectFilters->currentRow(), false);
+ isAsync = false;
}
void OBSBasicFilters::on_effectFilters_currentRowChanged(int row)
@@ -739,3 +750,23 @@ void OBSBasicFilters::EffectFilterNameEdited(QWidget *editor,
FilterNameEdited(editor, ui->effectFilters);
UNUSED_PARAMETER(endHint);
}
+
+void OBSBasicFilters::ResetFilters()
+{
+ QListWidget *list = isAsync ? ui->asyncFilters : ui->effectFilters;
+ int row = list->currentRow();
+
+ OBSSource filter = GetFilter(row, isAsync);
+
+ if (!filter)
+ return;
+
+ obs_data_t *settings = obs_source_get_settings(filter);
+ obs_data_clear(settings);
+ obs_data_release(settings);
+
+ if (!view->DeferUpdate())
+ obs_source_update(filter, nullptr);
+
+ view->RefreshProperties();
+}
diff --git a/UI/window-basic-filters.hpp b/UI/window-basic-filters.hpp
index 243897610..1e67f6641 100644
--- a/UI/window-basic-filters.hpp
+++ b/UI/window-basic-filters.hpp
@@ -68,12 +68,15 @@ private:
void FilterNameEdited(QWidget *editor, QListWidget *list);
+ bool isAsync;
+
private slots:
void AddFilter(OBSSource filter);
void RemoveFilter(OBSSource filter);
void ReorderFilters();
void RenameAsyncFilter();
void RenameEffectFilter();
+ void ResetFilters();
void AddFilterFromAction();
diff --git a/UI/window-basic-properties.cpp b/UI/window-basic-properties.cpp
index d163d41ca..dc35c1fc7 100644
--- a/UI/window-basic-properties.cpp
+++ b/UI/window-basic-properties.cpp
@@ -49,8 +49,9 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
int cy = (int)config_get_int(App()->GlobalConfig(), "PropertiesWindow",
"cy");
- buttonBox->setStandardButtons(QDialogButtonBox::Ok |
- QDialogButtonBox::Cancel);
+ buttonBox->addButton(QTStr("OK"), QDialogButtonBox::AcceptRole);
+ buttonBox->addButton(QTStr("Cancel"), QDialogButtonBox::RejectRole);
+ buttonBox->addButton(QTStr("Defaults"), QDialogButtonBox::ResetRole);
buttonBox->setObjectName(QStringLiteral("buttonBox"));
if (cx > 400 && cy > 400)
@@ -158,9 +159,8 @@ void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button)
if (view->DeferUpdate())
view->UpdateSettings();
- }
- if (val == QDialogButtonBox::RejectRole) {
+ } else if (val == QDialogButtonBox::RejectRole) {
obs_data_t *settings = obs_source_get_settings(source);
obs_data_clear(settings);
obs_data_release(settings);
@@ -171,6 +171,16 @@ void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button)
obs_source_update(source, oldSettings);
close();
+
+ } else if (val == QDialogButtonBox::ResetRole) {
+ obs_data_t *settings = obs_source_get_settings(source);
+ obs_data_clear(settings);
+ obs_data_release(settings);
+
+ if (!view->DeferUpdate())
+ obs_source_update(source, nullptr);
+
+ view->RefreshProperties();
}
}