|
@@ -119,6 +119,7 @@ void SourceTreeItem::DisconnectSignals()
|
|
|
{
|
|
|
sceneRemoveSignal.Disconnect();
|
|
|
itemRemoveSignal.Disconnect();
|
|
|
+ deselectSignal.Disconnect();
|
|
|
visibleSignal.Disconnect();
|
|
|
renameSignal.Disconnect();
|
|
|
removeSignal.Disconnect();
|
|
@@ -163,6 +164,16 @@ void SourceTreeItem::ReconnectSignals()
|
|
|
Q_ARG(bool, visible));
|
|
|
};
|
|
|
|
|
|
+ auto itemDeselect = [] (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_, "Deselect");
|
|
|
+ };
|
|
|
+
|
|
|
auto reorderGroup = [] (void *data, calldata_t*)
|
|
|
{
|
|
|
SourceTreeItem *this_ = reinterpret_cast<SourceTreeItem*>(data);
|
|
@@ -185,6 +196,10 @@ void SourceTreeItem::ReconnectSignals()
|
|
|
this);
|
|
|
}
|
|
|
|
|
|
+ if (scene != GetCurrentScene())
|
|
|
+ deselectSignal.Connect(signal, "item_deselect", itemDeselect,
|
|
|
+ this);
|
|
|
+
|
|
|
/* --------------------------------------------------------- */
|
|
|
|
|
|
auto renamed = [] (void *data, calldata_t *cd)
|
|
@@ -432,6 +447,11 @@ void SourceTreeItem::ExpandClicked(bool checked)
|
|
|
tree->GetStm()->CollapseGroup(sceneitem);
|
|
|
}
|
|
|
|
|
|
+void SourceTreeItem::Deselect()
|
|
|
+{
|
|
|
+ tree->SelectItem(sceneitem, false);
|
|
|
+}
|
|
|
+
|
|
|
/* ========================================================================= */
|
|
|
|
|
|
void SourceTreeModel::OBSFrontendEvent(enum obs_frontend_event event, void *ptr)
|