提交 20b4a1c0 编写于 作者: J jp9000

UI: Manually delete visibility item widgets

上级 db9e966e
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "display-helpers.hpp" #include "display-helpers.hpp"
#include "qt-wrappers.hpp" #include "qt-wrappers.hpp"
#include "visibility-item-widget.hpp" #include "visibility-item-widget.hpp"
#include "item-widget-helpers.hpp"
#include "obs-app.hpp" #include "obs-app.hpp"
#include <QMessageBox> #include <QMessageBox>
...@@ -105,9 +106,8 @@ OBSBasicFilters::OBSBasicFilters(QWidget *parent, OBSSource source_) ...@@ -105,9 +106,8 @@ OBSBasicFilters::OBSBasicFilters(QWidget *parent, OBSSource source_)
OBSBasicFilters::~OBSBasicFilters() OBSBasicFilters::~OBSBasicFilters()
{ {
ui->asyncFilters->clear(); ClearListItems(ui->asyncFilters);
ui->effectFilters->clear(); ClearListItems(ui->effectFilters);
QApplication::sendPostedEvents(this);
} }
void OBSBasicFilters::Init() void OBSBasicFilters::Init()
...@@ -195,7 +195,7 @@ void OBSBasicFilters::RemoveFilter(OBSSource filter) ...@@ -195,7 +195,7 @@ void OBSBasicFilters::RemoveFilter(OBSSource filter)
OBSSource curFilter = v.value<OBSSource>(); OBSSource curFilter = v.value<OBSSource>();
if (filter == curFilter) { if (filter == curFilter) {
delete item; DeleteListItem(list, item);
break; break;
} }
} }
...@@ -223,7 +223,7 @@ void OBSBasicFilters::ReorderFilter(QListWidget *list, ...@@ -223,7 +223,7 @@ void OBSBasicFilters::ReorderFilter(QListWidget *list,
if ((int)idx != i) { if ((int)idx != i) {
bool sel = (list->currentRow() == i); bool sel = (list->currentRow() == i);
listItem = list->takeItem(i); listItem = TakeListItem(list, i);
if (listItem) { if (listItem) {
list->insertItem((int)idx, listItem); list->insertItem((int)idx, listItem);
SetupVisibilityItem(list, SetupVisibilityItem(list,
...@@ -271,8 +271,8 @@ void OBSBasicFilters::UpdateFilters() ...@@ -271,8 +271,8 @@ void OBSBasicFilters::UpdateFilters()
if (!source) if (!source)
return; return;
ui->effectFilters->clear(); ClearListItems(ui->effectFilters);
ui->asyncFilters->clear(); ClearListItems(ui->asyncFilters);
obs_source_enum_filters(source, obs_source_enum_filters(source,
[] (obs_source_t*, obs_source_t *filter, void *p) [] (obs_source_t*, obs_source_t *filter, void *p)
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "obs-app.hpp" #include "obs-app.hpp"
#include "platform.hpp" #include "platform.hpp"
#include "visibility-item-widget.hpp" #include "visibility-item-widget.hpp"
#include "item-widget-helpers.hpp"
#include "window-basic-settings.hpp" #include "window-basic-settings.hpp"
#include "window-namedialog.hpp" #include "window-namedialog.hpp"
#include "window-basic-source-select.hpp" #include "window-basic-source-select.hpp"
...@@ -1009,7 +1010,7 @@ OBSSceneItem OBSBasic::GetCurrentSceneItem() ...@@ -1009,7 +1010,7 @@ OBSSceneItem OBSBasic::GetCurrentSceneItem()
void OBSBasic::UpdateSources(OBSScene scene) void OBSBasic::UpdateSources(OBSScene scene)
{ {
ui->sources->clear(); ClearListItems(ui->sources);
obs_scene_enum_items(scene, obs_scene_enum_items(scene,
[] (obs_scene_t *scene, obs_sceneitem_t *item, void *p) [] (obs_scene_t *scene, obs_sceneitem_t *item, void *p)
...@@ -1121,7 +1122,7 @@ void OBSBasic::RemoveScene(OBSSource source) ...@@ -1121,7 +1122,7 @@ void OBSBasic::RemoveScene(OBSSource source)
if (sel != nullptr) { if (sel != nullptr) {
if (items.contains(sel)) if (items.contains(sel))
ui->sources->clear(); ClearListItems(ui->sources);
delete sel; delete sel;
} }
} }
...@@ -1146,7 +1147,7 @@ void OBSBasic::RemoveSceneItem(OBSSceneItem item) ...@@ -1146,7 +1147,7 @@ void OBSBasic::RemoveSceneItem(OBSSceneItem item)
QListWidgetItem *listItem = ui->sources->item(i); QListWidgetItem *listItem = ui->sources->item(i);
if (GetOBSRef<OBSSceneItem>(listItem) == item) { if (GetOBSRef<OBSSceneItem>(listItem) == item) {
delete listItem; DeleteListItem(ui->sources, listItem);
break; break;
} }
} }
...@@ -1465,7 +1466,7 @@ void OBSBasic::ReorderSceneItem(obs_sceneitem_t *item, size_t idx) ...@@ -1465,7 +1466,7 @@ void OBSBasic::ReorderSceneItem(obs_sceneitem_t *item, size_t idx)
if ((int)idx_inv != i) { if ((int)idx_inv != i) {
bool sel = (ui->sources->currentRow() == i); bool sel = (ui->sources->currentRow() == i);
listItem = ui->sources->takeItem(i); listItem = TakeListItem(ui->sources, i);
if (listItem) { if (listItem) {
ui->sources->insertItem(idx_inv, ui->sources->insertItem(idx_inv,
listItem); listItem);
...@@ -1975,8 +1976,7 @@ void OBSBasic::closeEvent(QCloseEvent *event) ...@@ -1975,8 +1976,7 @@ void OBSBasic::closeEvent(QCloseEvent *event)
while ((item = ui->scenes->takeItem(0))) while ((item = ui->scenes->takeItem(0)))
delete item; delete item;
while ((item = ui->sources->takeItem(0))) ClearListItems(ui->sources);
delete item;
} }
void OBSBasic::changeEvent(QEvent *event) void OBSBasic::changeEvent(QEvent *event)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册