UI: Disable edit transform if item is locked

The transform window was still accessible if the scene item
was locked.
This commit is contained in:
cg2121
2023-09-09 04:17:46 -05:00
committed by Patrick Heyer
parent cd01120740
commit ef99553a7e
3 changed files with 27 additions and 4 deletions

View File

@@ -125,6 +125,7 @@ void OBSBasicTransform::SetScene(OBSScene scene)
selectSignal.Disconnect();
deselectSignal.Disconnect();
removeSignal.Disconnect();
lockSignal.Disconnect();
if (scene) {
OBSSource source = obs_scene_get_source(scene);
@@ -139,6 +140,8 @@ void OBSBasicTransform::SetScene(OBSScene scene)
this);
deselectSignal.Connect(signal, "item_deselect",
OBSSceneItemDeselect, this);
lockSignal.Connect(signal, "item_locked", OBSSceneItemLocked,
this);
}
}
@@ -148,15 +151,20 @@ void OBSBasicTransform::SetItem(OBSSceneItem newItem)
Q_ARG(OBSSceneItem, OBSSceneItem(newItem)));
}
void OBSBasicTransform::SetEnabled(bool enable)
{
ui->container->setEnabled(enable);
ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(enable);
}
void OBSBasicTransform::SetItemQt(OBSSceneItem newItem)
{
item = newItem;
if (item)
RefreshControls();
bool enable = !!item;
ui->container->setEnabled(enable);
ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(enable);
bool enable = !!item && !obs_sceneitem_locked(item);
SetEnabled(enable);
}
void OBSBasicTransform::OBSChannelChanged(void *param, calldata_t *data)
@@ -222,6 +230,15 @@ void OBSBasicTransform::OBSSceneItemDeselect(void *param, calldata_t *data)
}
}
void OBSBasicTransform::OBSSceneItemLocked(void *param, calldata_t *data)
{
OBSBasicTransform *window =
reinterpret_cast<OBSBasicTransform *>(param);
bool locked = calldata_bool(data, "locked");
QMetaObject::invokeMethod(window, "SetEnabled", Q_ARG(bool, !locked));
}
static const uint32_t listToAlign[] = {OBS_ALIGN_TOP | OBS_ALIGN_LEFT,
OBS_ALIGN_TOP,
OBS_ALIGN_TOP | OBS_ALIGN_RIGHT,