0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00

UI: Use vector for signals in source tree/transform

Cleans up signal code.
This commit is contained in:
cg2121 2024-01-30 18:09:20 -06:00 committed by Lain
parent a0e666d8e3
commit b6e2face96
4 changed files with 23 additions and 50 deletions

View File

@ -182,17 +182,7 @@ void SourceTreeItem::paintEvent(QPaintEvent *event)
void SourceTreeItem::DisconnectSignals()
{
sceneRemoveSignal.Disconnect();
itemRemoveSignal.Disconnect();
selectSignal.Disconnect();
deselectSignal.Disconnect();
visibleSignal.Disconnect();
lockedSignal.Disconnect();
renameSignal.Disconnect();
removeSignal.Disconnect();
if (obs_sceneitem_is_group(sceneitem))
groupReorderSignal.Disconnect();
sigs.clear();
}
void SourceTreeItem::Clear()
@ -279,19 +269,18 @@ void SourceTreeItem::ReconnectSignals()
obs_source_t *sceneSource = obs_scene_get_source(scene);
signal_handler_t *signal = obs_source_get_signal_handler(sceneSource);
sceneRemoveSignal.Connect(signal, "remove", removeItem, this);
itemRemoveSignal.Connect(signal, "item_remove", removeItem, this);
visibleSignal.Connect(signal, "item_visible", itemVisible, this);
lockedSignal.Connect(signal, "item_locked", itemLocked, this);
selectSignal.Connect(signal, "item_select", itemSelect, this);
deselectSignal.Connect(signal, "item_deselect", itemDeselect, this);
sigs.emplace_back(signal, "remove", removeItem, this);
sigs.emplace_back(signal, "item_remove", removeItem, this);
sigs.emplace_back(signal, "item_visible", itemVisible, this);
sigs.emplace_back(signal, "item_locked", itemLocked, this);
sigs.emplace_back(signal, "item_select", itemSelect, this);
sigs.emplace_back(signal, "item_deselect", itemDeselect, this);
if (obs_sceneitem_is_group(sceneitem)) {
obs_source_t *source = obs_sceneitem_get_source(sceneitem);
signal = obs_source_get_signal_handler(source);
groupReorderSignal.Connect(signal, "reorder", reorderGroup,
this);
sigs.emplace_back(signal, "reorder", reorderGroup, this);
}
/* --------------------------------------------------------- */
@ -315,8 +304,8 @@ void SourceTreeItem::ReconnectSignals()
obs_source_t *source = obs_sceneitem_get_source(sceneitem);
signal = obs_source_get_signal_handler(source);
renameSignal.Connect(signal, "rename", renamed, this);
removeSignal.Connect(signal, "remove", removeSource, this);
sigs.emplace_back(signal, "rename", renamed, this);
sigs.emplace_back(signal, "remove", removeSource, this);
}
void SourceTreeItem::mouseDoubleClickEvent(QMouseEvent *event)

View File

@ -65,15 +65,7 @@ private:
SourceTree *tree;
OBSSceneItem sceneitem;
OBSSignal sceneRemoveSignal;
OBSSignal itemRemoveSignal;
OBSSignal groupReorderSignal;
OBSSignal selectSignal;
OBSSignal deselectSignal;
OBSSignal visibleSignal;
OBSSignal lockedSignal;
OBSSignal renameSignal;
OBSSignal removeSignal;
std::vector<OBSSignal> sigs;
virtual void paintEvent(QPaintEvent *event) override;

View File

@ -123,27 +123,23 @@ OBSBasicTransform::~OBSBasicTransform()
void OBSBasicTransform::SetScene(OBSScene scene)
{
transformSignal.Disconnect();
selectSignal.Disconnect();
deselectSignal.Disconnect();
removeSignal.Disconnect();
lockSignal.Disconnect();
sigs.clear();
if (scene) {
OBSSource source = obs_scene_get_source(scene);
signal_handler_t *signal =
obs_source_get_signal_handler(source);
transformSignal.Connect(signal, "item_transform",
OBSSceneItemTransform, this);
removeSignal.Connect(signal, "item_remove", OBSSceneItemRemoved,
this);
selectSignal.Connect(signal, "item_select", OBSSceneItemSelect,
this);
deselectSignal.Connect(signal, "item_deselect",
OBSSceneItemDeselect, this);
lockSignal.Connect(signal, "item_locked", OBSSceneItemLocked,
this);
sigs.emplace_back(signal, "item_transform",
OBSSceneItemTransform, this);
sigs.emplace_back(signal, "item_remove", OBSSceneItemRemoved,
this);
sigs.emplace_back(signal, "item_select", OBSSceneItemSelect,
this);
sigs.emplace_back(signal, "item_deselect", OBSSceneItemDeselect,
this);
sigs.emplace_back(signal, "item_locked", OBSSceneItemLocked,
this);
}
}

View File

@ -17,11 +17,7 @@ private:
OBSBasic *main;
OBSSceneItem item;
OBSSignal channelChangedSignal;
OBSSignal transformSignal;
OBSSignal removeSignal;
OBSSignal selectSignal;
OBSSignal deselectSignal;
OBSSignal lockSignal;
std::vector<OBSSignal> sigs;
std::string undo_data;