mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-07-18 19:24:42 -04:00
libobs, UI: Implement item_locked event
Similar to item_visible, this event fires whenever a scene item is locked or unlocked. This allows the UI and libobs to remain in sync regarding scene elements' statuses.
This commit is contained in:
@@ -130,6 +130,7 @@ void SourceTreeItem::DisconnectSignals()
|
||||
itemRemoveSignal.Disconnect();
|
||||
deselectSignal.Disconnect();
|
||||
visibleSignal.Disconnect();
|
||||
lockedSignal.Disconnect();
|
||||
renameSignal.Disconnect();
|
||||
removeSignal.Disconnect();
|
||||
}
|
||||
@@ -177,6 +178,18 @@ void SourceTreeItem::ReconnectSignals()
|
||||
Q_ARG(bool, visible));
|
||||
};
|
||||
|
||||
auto itemLocked = [] (void *data, calldata_t *cd)
|
||||
{
|
||||
SourceTreeItem *this_ = reinterpret_cast<SourceTreeItem*>(data);
|
||||
obs_sceneitem_t *curItem =
|
||||
(obs_sceneitem_t*)calldata_ptr(cd, "item");
|
||||
bool locked = calldata_bool(cd, "locked");
|
||||
|
||||
if (curItem == this_->sceneitem)
|
||||
QMetaObject::invokeMethod(this_, "LockedChanged",
|
||||
Q_ARG(bool, locked));
|
||||
};
|
||||
|
||||
auto itemDeselect = [] (void *data, calldata_t *cd)
|
||||
{
|
||||
SourceTreeItem *this_ = reinterpret_cast<SourceTreeItem*>(data);
|
||||
@@ -200,6 +213,7 @@ void SourceTreeItem::ReconnectSignals()
|
||||
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);
|
||||
|
||||
if (obs_sceneitem_is_group(sceneitem)) {
|
||||
obs_source_t *source = obs_sceneitem_get_source(sceneitem);
|
||||
@@ -368,6 +382,11 @@ void SourceTreeItem::VisibilityChanged(bool visible)
|
||||
vis->setChecked(visible);
|
||||
}
|
||||
|
||||
void SourceTreeItem::LockedChanged(bool locked)
|
||||
{
|
||||
lock->setChecked(locked);
|
||||
}
|
||||
|
||||
void SourceTreeItem::Renamed(const QString &name)
|
||||
{
|
||||
label->setText(name);
|
||||
|
||||
Reference in New Issue
Block a user