diff --git a/UI/source-tree.cpp b/UI/source-tree.cpp index 0fbce074a..4fa84e681 100644 --- a/UI/source-tree.cpp +++ b/UI/source-tree.cpp @@ -129,6 +129,12 @@ void SourceTreeItem::DisconnectSignals() removeSignal.Disconnect(); } +void SourceTreeItem::Clear() +{ + DisconnectSignals(); + sceneitem = nullptr; +} + void SourceTreeItem::ReconnectSignals() { if (!sceneitem) @@ -150,10 +156,8 @@ void SourceTreeItem::ReconnectSignals() Q_ARG(OBSSceneItem, curItem)); curItem = nullptr; } - if (!curItem) { - this_->DisconnectSignals(); - this_->sceneitem = nullptr; - } + if (!curItem) + QMetaObject::invokeMethod(this_, "Clear"); }; auto itemVisible = [] (void *data, calldata_t *cd) diff --git a/UI/source-tree.hpp b/UI/source-tree.hpp index cacd950b8..5893fafa8 100644 --- a/UI/source-tree.hpp +++ b/UI/source-tree.hpp @@ -72,6 +72,8 @@ private: virtual void paintEvent(QPaintEvent* event) override; private slots: + void Clear(); + void EnterEditMode(); void ExitEditMode(bool save);