mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-03-03 14:16:36 -05:00
UI: Make select/deselect signals work w/ group items
This commit is contained in:
@@ -151,6 +151,7 @@ void SourceTreeItem::DisconnectSignals()
|
||||
{
|
||||
sceneRemoveSignal.Disconnect();
|
||||
itemRemoveSignal.Disconnect();
|
||||
selectSignal.Disconnect();
|
||||
deselectSignal.Disconnect();
|
||||
visibleSignal.Disconnect();
|
||||
lockedSignal.Disconnect();
|
||||
@@ -212,6 +213,16 @@ void SourceTreeItem::ReconnectSignals()
|
||||
Q_ARG(bool, locked));
|
||||
};
|
||||
|
||||
auto itemSelect = [](void *data, calldata_t *cd) {
|
||||
SourceTreeItem *this_ =
|
||||
reinterpret_cast<SourceTreeItem *>(data);
|
||||
obs_sceneitem_t *curItem =
|
||||
(obs_sceneitem_t *)calldata_ptr(cd, "item");
|
||||
|
||||
if (curItem == this_->sceneitem)
|
||||
QMetaObject::invokeMethod(this_, "Select");
|
||||
};
|
||||
|
||||
auto itemDeselect = [](void *data, calldata_t *cd) {
|
||||
SourceTreeItem *this_ =
|
||||
reinterpret_cast<SourceTreeItem *>(data);
|
||||
@@ -236,6 +247,8 @@ void SourceTreeItem::ReconnectSignals()
|
||||
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);
|
||||
|
||||
if (obs_sceneitem_is_group(sceneitem)) {
|
||||
obs_source_t *source = obs_sceneitem_get_source(sceneitem);
|
||||
@@ -245,10 +258,6 @@ void SourceTreeItem::ReconnectSignals()
|
||||
this);
|
||||
}
|
||||
|
||||
if (scene != GetCurrentScene())
|
||||
deselectSignal.Connect(signal, "item_deselect", itemDeselect,
|
||||
this);
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
|
||||
auto renamed = [](void *data, calldata_t *cd) {
|
||||
@@ -516,6 +525,11 @@ void SourceTreeItem::ExpandClicked(bool checked)
|
||||
tree->GetStm()->CollapseGroup(sceneitem);
|
||||
}
|
||||
|
||||
void SourceTreeItem::Select()
|
||||
{
|
||||
tree->SelectItem(sceneitem, true);
|
||||
}
|
||||
|
||||
void SourceTreeItem::Deselect()
|
||||
{
|
||||
tree->SelectItem(sceneitem, false);
|
||||
|
||||
Reference in New Issue
Block a user