Procházet zdrojové kódy

UI: Update Edit Transform dialog on scene switch

Closes obsproject/obs-studio#4312
Mike před 4 roky
rodič
revize
9267c7e53d

+ 2 - 0
UI/window-basic-main.cpp

@@ -7714,6 +7714,8 @@ void OBSBasic::on_actionEditTransform_triggered()
 		return;
 		return;
 
 
 	transformWindow = new OBSBasicTransform(this);
 	transformWindow = new OBSBasicTransform(this);
+	connect(ui->scenes, &QListWidget::currentItemChanged, transformWindow,
+		&OBSBasicTransform::OnSceneChanged);
 	transformWindow->show();
 	transformWindow->show();
 	transformWindow->setAttribute(Qt::WA_DeleteOnClose, true);
 	transformWindow->setAttribute(Qt::WA_DeleteOnClose, true);
 }
 }

+ 16 - 0
UI/window-basic-transform.cpp

@@ -2,6 +2,7 @@
 #include "window-basic-transform.hpp"
 #include "window-basic-transform.hpp"
 #include "window-basic-main.hpp"
 #include "window-basic-main.hpp"
 
 
+Q_DECLARE_METATYPE(OBSScene);
 Q_DECLARE_METATYPE(OBSSceneItem);
 Q_DECLARE_METATYPE(OBSSceneItem);
 
 
 static bool find_sel(obs_scene_t *, obs_sceneitem_t *item, void *param)
 static bool find_sel(obs_scene_t *, obs_sceneitem_t *item, void *param)
@@ -351,3 +352,18 @@ void OBSBasicTransform::on_resetButton_clicked()
 {
 {
 	main->on_actionResetTransform_triggered();
 	main->on_actionResetTransform_triggered();
 }
 }
+
+template<typename T> static T GetOBSRef(QListWidgetItem *item)
+{
+	return item->data(static_cast<int>(QtDataRole::OBSRef)).value<T>();
+}
+
+void OBSBasicTransform::OnSceneChanged(QListWidgetItem *current,
+				       QListWidgetItem *)
+{
+	if (!current)
+		return;
+
+	obs_scene_t *scene = GetOBSRef<OBSScene>(current);
+	this->SetScene(scene);
+}

+ 4 - 0
UI/window-basic-transform.hpp

@@ -6,6 +6,7 @@
 #include "ui_OBSBasicTransform.h"
 #include "ui_OBSBasicTransform.h"
 
 
 class OBSBasic;
 class OBSBasic;
+class QListWidgetItem;
 
 
 class OBSBasicTransform : public QDialog {
 class OBSBasicTransform : public QDialog {
 	Q_OBJECT
 	Q_OBJECT
@@ -49,4 +50,7 @@ private slots:
 public:
 public:
 	OBSBasicTransform(OBSBasic *parent);
 	OBSBasicTransform(OBSBasic *parent);
 	~OBSBasicTransform();
 	~OBSBasicTransform();
+
+public slots:
+	void OnSceneChanged(QListWidgetItem *current, QListWidgetItem *prev);
 };
 };