From 9267c7e53d7781e299fda77f0b62ba599e23ff3a Mon Sep 17 00:00:00 2001 From: Mike Date: Sat, 13 Mar 2021 20:36:55 +0800 Subject: [PATCH] UI: Update Edit Transform dialog on scene switch Closes obsproject/obs-studio#4312 --- UI/window-basic-main.cpp | 2 ++ UI/window-basic-transform.cpp | 16 ++++++++++++++++ UI/window-basic-transform.hpp | 4 ++++ 3 files changed, 22 insertions(+) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index f8147b438..11dc3b0c1 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -7714,6 +7714,8 @@ void OBSBasic::on_actionEditTransform_triggered() return; transformWindow = new OBSBasicTransform(this); + connect(ui->scenes, &QListWidget::currentItemChanged, transformWindow, + &OBSBasicTransform::OnSceneChanged); transformWindow->show(); transformWindow->setAttribute(Qt::WA_DeleteOnClose, true); } diff --git a/UI/window-basic-transform.cpp b/UI/window-basic-transform.cpp index 20130cc40..b9f35b4b7 100644 --- a/UI/window-basic-transform.cpp +++ b/UI/window-basic-transform.cpp @@ -2,6 +2,7 @@ #include "window-basic-transform.hpp" #include "window-basic-main.hpp" +Q_DECLARE_METATYPE(OBSScene); Q_DECLARE_METATYPE(OBSSceneItem); 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(); } + +template static T GetOBSRef(QListWidgetItem *item) +{ + return item->data(static_cast(QtDataRole::OBSRef)).value(); +} + +void OBSBasicTransform::OnSceneChanged(QListWidgetItem *current, + QListWidgetItem *) +{ + if (!current) + return; + + obs_scene_t *scene = GetOBSRef(current); + this->SetScene(scene); +} diff --git a/UI/window-basic-transform.hpp b/UI/window-basic-transform.hpp index 65f01e041..fcbf4b35a 100644 --- a/UI/window-basic-transform.hpp +++ b/UI/window-basic-transform.hpp @@ -6,6 +6,7 @@ #include "ui_OBSBasicTransform.h" class OBSBasic; +class QListWidgetItem; class OBSBasicTransform : public QDialog { Q_OBJECT @@ -49,4 +50,7 @@ private slots: public: OBSBasicTransform(OBSBasic *parent); ~OBSBasicTransform(); + +public slots: + void OnSceneChanged(QListWidgetItem *current, QListWidgetItem *prev); };