mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-05-11 16:59:43 -04:00
frontend: Replace transition duration spinbox direct access
This commit is contained in:
@@ -95,12 +95,12 @@ void OBSStudioAPI::obs_frontend_set_current_transition(obs_source_t *transition)
|
||||
|
||||
int OBSStudioAPI::obs_frontend_get_transition_duration()
|
||||
{
|
||||
return main->ui->transitionDuration->value();
|
||||
return main->GetTransitionDuration();
|
||||
}
|
||||
|
||||
void OBSStudioAPI::obs_frontend_set_transition_duration(int duration)
|
||||
{
|
||||
QMetaObject::invokeMethod(main->ui->transitionDuration, "setValue", Q_ARG(int, duration));
|
||||
QMetaObject::invokeMethod(main, "SetTransitionDuration", Q_ARG(int, duration));
|
||||
}
|
||||
|
||||
void OBSStudioAPI::obs_frontend_release_tbar()
|
||||
|
||||
@@ -313,6 +313,14 @@ OBSBasic::OBSBasic(QWidget *parent) : OBSMainWindow(parent), undo_s(ui), ui(new
|
||||
connect(ui->transitions, &QComboBox::currentIndexChanged, this,
|
||||
[this]() { SetCurrentTransition(ui->transitions->currentData().toString()); });
|
||||
|
||||
connect(this, &OBSBasic::TransitionDurationChanged, this, [this](int duration) {
|
||||
QSignalBlocker sb(ui->transitionDuration);
|
||||
ui->transitionDuration->setValue(duration);
|
||||
});
|
||||
|
||||
connect(ui->transitionDuration, &QSpinBox::valueChanged, this,
|
||||
[this](int value) { SetTransitionDuration(value); });
|
||||
|
||||
startingDockLayout = saveState();
|
||||
|
||||
statsDock = new OBSDock();
|
||||
|
||||
@@ -1482,6 +1482,7 @@ private:
|
||||
std::vector<std::string> transitionUuids;
|
||||
// FIXME: Replace usages of a name to identify a transition
|
||||
std::unordered_map<std::string, std::string> transitionNameToUuids;
|
||||
int transitionDuration;
|
||||
std::string currentTransitionUuid;
|
||||
obs_source_t *fadeTransition;
|
||||
obs_source_t *cutTransition;
|
||||
@@ -1549,6 +1550,8 @@ public slots:
|
||||
|
||||
void SetCurrentTransition(const QString &uuid);
|
||||
|
||||
void SetTransitionDuration(int duration);
|
||||
|
||||
private slots:
|
||||
void AddTransition(const char *id);
|
||||
void RenameTransition(OBSSource transition);
|
||||
@@ -1564,7 +1567,6 @@ private slots:
|
||||
void on_transitionAdd_clicked();
|
||||
void on_transitionRemove_clicked();
|
||||
void on_transitionProps_clicked();
|
||||
void on_transitionDuration_valueChanged();
|
||||
|
||||
void ShowTransitionProperties();
|
||||
void HideTransitionProperties();
|
||||
@@ -1577,6 +1579,8 @@ signals:
|
||||
|
||||
void CurrentTransitionChanged(const QString &uuid);
|
||||
|
||||
void TransitionDurationChanged(const int &duration);
|
||||
|
||||
public:
|
||||
int GetTransitionDuration();
|
||||
int GetTbarPosition();
|
||||
|
||||
@@ -886,9 +886,8 @@ void OBSBasic::Save(SceneCollection &collection)
|
||||
OBSDataArrayAutoRelease quickTrData = SaveQuickTransitions();
|
||||
OBSDataArrayAutoRelease savedProjectorList = SaveProjectors();
|
||||
OBSDataArrayAutoRelease savedCanvases = OBS::Canvas::SaveCanvases(canvases);
|
||||
OBSDataAutoRelease saveData = GenerateSaveData(sceneOrder, quickTrData, ui->transitionDuration->value(),
|
||||
transitionsData, scene, curProgramScene, savedProjectorList,
|
||||
savedCanvases);
|
||||
OBSDataAutoRelease saveData = GenerateSaveData(sceneOrder, quickTrData, transitionDuration, transitionsData,
|
||||
scene, curProgramScene, savedProjectorList, savedCanvases);
|
||||
|
||||
obs_data_set_bool(saveData, "preview_locked", ui->preview->Locked());
|
||||
obs_data_set_bool(saveData, "scaling_enabled", ui->preview->IsFixedScaling());
|
||||
@@ -1004,7 +1003,7 @@ void OBSBasic::CreateDefaultScene(bool firstStart)
|
||||
ClearSceneData();
|
||||
InitDefaultTransitions();
|
||||
CreateDefaultQuickTransitions();
|
||||
ui->transitionDuration->setValue(300);
|
||||
transitionDuration = 300;
|
||||
SetTransition(fadeTransition);
|
||||
|
||||
updateRemigrationMenuItem(SceneCoordinateMode::Relative, ui->actionRemigrateSceneCollection);
|
||||
@@ -1304,7 +1303,7 @@ void OBSBasic::LoadData(obs_data_t *data, SceneCollection &collection)
|
||||
if (!curTransition)
|
||||
curTransition = fadeTransition;
|
||||
|
||||
ui->transitionDuration->setValue(newDuration);
|
||||
transitionDuration = newDuration;
|
||||
SetTransition(curTransition);
|
||||
|
||||
retryScene:
|
||||
|
||||
@@ -333,7 +333,7 @@ void OBSBasic::TransitionToScene(OBSSource source, bool force, bool quickTransit
|
||||
obs_transition_set(transition, source);
|
||||
OnEvent(OBS_FRONTEND_EVENT_SCENE_CHANGED);
|
||||
} else {
|
||||
int duration = ui->transitionDuration->value();
|
||||
int duration = GetTransitionDuration();
|
||||
|
||||
/* check for scene override */
|
||||
OBSSource trOverride = GetOverrideTransition(source);
|
||||
@@ -603,11 +603,6 @@ void OBSBasic::on_transitionProps_clicked()
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
void OBSBasic::on_transitionDuration_valueChanged()
|
||||
{
|
||||
OnEvent(OBS_FRONTEND_EVENT_TRANSITION_DURATION_CHANGED);
|
||||
}
|
||||
|
||||
QuickTransition *OBSBasic::GetQuickTransition(int id)
|
||||
{
|
||||
for (QuickTransition &qt : quickTransitions) {
|
||||
@@ -1420,7 +1415,7 @@ int OBSBasic::GetOverrideTransitionDuration(OBSSource source)
|
||||
|
||||
int OBSBasic::GetTransitionDuration()
|
||||
{
|
||||
return ui->transitionDuration->value();
|
||||
return transitionDuration;
|
||||
}
|
||||
|
||||
void OBSBasic::UpdateCurrentTransition(const std::string &uuid, bool setTransition)
|
||||
@@ -1450,3 +1445,18 @@ void OBSBasic::SetCurrentTransition(const QString &uuid)
|
||||
|
||||
emit CurrentTransitionChanged(uuid);
|
||||
}
|
||||
|
||||
void OBSBasic::SetTransitionDuration(int duration)
|
||||
{
|
||||
duration = std::max(duration, 50);
|
||||
duration = std::min(duration, 20000);
|
||||
|
||||
if (duration == transitionDuration)
|
||||
return;
|
||||
|
||||
transitionDuration = duration;
|
||||
|
||||
emit TransitionDurationChanged(transitionDuration);
|
||||
|
||||
OnEvent(OBS_FRONTEND_EVENT_TRANSITION_DURATION_CHANGED);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user