diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 0d2570f0e..6fbf4fcd4 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -684,6 +684,7 @@ Basic.TransformWindow.BoundsAlignment="Alignment in Bounding Box"
Basic.TransformWindow.Bounds="Bounding Box Size"
Basic.TransformWindow.BoundsWidth="Bounding Box Width"
Basic.TransformWindow.BoundsHeight="Bounding Box Height"
+Basic.TransformWindow.CropToBounds="Crop to Bounding Box"
Basic.TransformWindow.Crop="Crop"
Basic.TransformWindow.CropLeft="Crop Left"
Basic.TransformWindow.CropRight="Crop Right"
diff --git a/UI/forms/OBSBasicTransform.ui b/UI/forms/OBSBasicTransform.ui
index 37be8b269..56a36a0a4 100644
--- a/UI/forms/OBSBasicTransform.ui
+++ b/UI/forms/OBSBasicTransform.ui
@@ -602,6 +602,16 @@
-
+
+
+ Basic.TransformWindow.BoundsAlignment
+
+
+ Basic.TransformWindow.CropToBounds
+
+
+
+ -
Qt::Vertical
@@ -614,7 +624,7 @@
- -
+
-
Basic.TransformWindow.Crop
@@ -624,7 +634,7 @@
- -
+
-
-
diff --git a/UI/window-basic-transform.cpp b/UI/window-basic-transform.cpp
index f13aaeb0e..bc84bc900 100644
--- a/UI/window-basic-transform.cpp
+++ b/UI/window-basic-transform.cpp
@@ -71,6 +71,8 @@ OBSBasicTransform::OBSBasicTransform(OBSSceneItem item, OBSBasic *parent)
&OBSBasicTransform::OnCropChanged);
HookWidget(ui->cropBottom, ISCROLL_CHANGED,
&OBSBasicTransform::OnCropChanged);
+ HookWidget(ui->cropToBounds, &QCheckBox::stateChanged,
+ &OBSBasicTransform::OnControlChanged);
ui->buttonBox->button(QDialogButtonBox::Close)->setDefault(true);
@@ -297,6 +299,7 @@ void OBSBasicTransform::RefreshControls()
ui->boundsAlign->setCurrentIndex(boundsAlignIndex);
ui->boundsWidth->setValue(osi.bounds.x);
ui->boundsHeight->setValue(osi.bounds.y);
+ ui->cropToBounds->setChecked(osi.crop_to_bounds);
ui->cropLeft->setValue(int(crop.left));
ui->cropRight->setValue(int(crop.right));
@@ -319,6 +322,7 @@ void OBSBasicTransform::OnBoundsType(int index)
ui->boundsAlign->setEnabled(enable);
ui->boundsWidth->setEnabled(enable);
ui->boundsHeight->setEnabled(enable);
+ ui->cropToBounds->setEnabled(enable);
if (!ignoreItemChange) {
obs_bounds_type lastType = obs_sceneitem_get_bounds_type(item);
@@ -364,6 +368,7 @@ void OBSBasicTransform::OnControlChanged()
oti.bounds_alignment = listToAlign[ui->boundsAlign->currentIndex()];
oti.bounds.x = float(ui->boundsWidth->value());
oti.bounds.y = float(ui->boundsHeight->value());
+ oti.crop_to_bounds = ui->cropToBounds->isChecked();
ignoreTransformSignal = true;
obs_sceneitem_set_info(item, &oti);