diff --git a/UI/forms/OBSBasicFilters.ui b/UI/forms/OBSBasicFilters.ui
index b25d5d373e05d1777c7d0d8bd1ae6a4a8e8cd8a8..572a31f9dd150cd62d387bc223c926970d6e05c3 100644
--- a/UI/forms/OBSBasicFilters.ui
+++ b/UI/forms/OBSBasicFilters.ui
@@ -425,6 +425,42 @@
+
+
+
+ :/res/images/list_remove.png:/res/images/list_remove.png
+
+
+ Remove
+
+
+ Del
+
+
+
+
+
+ :/res/images/up.png:/res/images/up.png
+
+
+ Basic.MainMenu.Edit.Order.MoveUp
+
+
+ Ctrl+Up
+
+
+
+
+
+ :/res/images/down.png:/res/images/down.png
+
+
+ Basic.MainMenu.Edit.Order.MoveDown
+
+
+ Ctrl+Down
+
+
diff --git a/UI/window-basic-filters.cpp b/UI/window-basic-filters.cpp
index 564deac6a6ea9d18f42a66cae6bb35c652724e3e..df9ee1e4b765158148a90b61806b1ac1e19e20fb 100644
--- a/UI/window-basic-filters.cpp
+++ b/UI/window-basic-filters.cpp
@@ -72,6 +72,14 @@ OBSBasicFilters::OBSBasicFilters(QWidget *parent, OBSSource source_)
const char *name = obs_source_get_name(source);
setWindowTitle(QTStr("Basic.Filters.Title").arg(QT_UTF8(name)));
+#ifndef QT_NO_SHORTCUT
+ ui->actionRemoveFilter->setShortcut(QApplication::translate("OBSBasicFilters", "Del", nullptr));
+#endif // QT_NO_SHORTCUT
+
+ addAction(ui->actionRemoveFilter);
+ addAction(ui->actionMoveUp);
+ addAction(ui->actionMoveDown);
+
installEventFilter(CreateShortcutFilter());
connect(ui->asyncFilters->itemDelegate(),
@@ -659,6 +667,30 @@ void OBSBasicFilters::on_effectFilters_currentRowChanged(int row)
UpdatePropertiesView(row, false);
}
+void OBSBasicFilters::on_actionRemoveFilter_triggered()
+{
+ if (ui->asyncFilters->hasFocus())
+ on_removeAsyncFilter_clicked();
+ else if (ui->effectFilters->hasFocus())
+ on_removeEffectFilter_clicked();
+}
+
+void OBSBasicFilters::on_actionMoveUp_triggered()
+{
+ if (ui->asyncFilters->hasFocus())
+ on_moveAsyncFilterUp_clicked();
+ else if (ui->effectFilters->hasFocus())
+ on_moveEffectFilterUp_clicked();
+}
+
+void OBSBasicFilters::on_actionMoveDown_triggered()
+{
+ if (ui->asyncFilters->hasFocus())
+ on_moveAsyncFilterDown_clicked();
+ else if (ui->effectFilters->hasFocus())
+ on_moveEffectFilterDown_clicked();
+}
+
void OBSBasicFilters::CustomContextMenu(const QPoint &pos, bool async)
{
QListWidget *list = async ? ui->asyncFilters : ui->effectFilters;
diff --git a/UI/window-basic-filters.hpp b/UI/window-basic-filters.hpp
index 9fdbce303f9e3d5834cf77449022a9c8c100f109..5ab28a09d8d3028c4d6abced566d9f83fdd997aa 100644
--- a/UI/window-basic-filters.hpp
+++ b/UI/window-basic-filters.hpp
@@ -100,6 +100,10 @@ private slots:
void on_effectFilters_customContextMenuRequested(const QPoint &pos);
void on_effectFilters_GotFocus();
+ void on_actionRemoveFilter_triggered();
+ void on_actionMoveUp_triggered();
+ void on_actionMoveDown_triggered();
+
void AsyncFilterNameEdited(QWidget *editor,
QAbstractItemDelegate::EndEditHint endHint);
void EffectFilterNameEdited(QWidget *editor,