UI: Update quick transitions on transition add/removal

Fixes a bug where the individual drop-down lists of each quick
transition would not have the correct available transitions listed if
transitions were added, renamed, or removed
This commit is contained in:
jp9000
2017-05-14 23:06:11 -07:00
parent b5a6e12219
commit b2e376b022
2 changed files with 36 additions and 1 deletions
+35 -1
View File
@@ -392,6 +392,9 @@ void OBSBasic::AddTransition()
if (api)
api->on_event(OBS_FRONTEND_EVENT_TRANSITION_LIST_CHANGED);
ClearQuickTransitionWidgets();
RefreshQuickTransitions();
}
}
@@ -445,6 +448,9 @@ void OBSBasic::on_transitionRemove_clicked()
if (api)
api->on_event(OBS_FRONTEND_EVENT_TRANSITION_LIST_CHANGED);
ClearQuickTransitionWidgets();
RefreshQuickTransitions();
}
void OBSBasic::RenameTransition()
@@ -483,8 +489,11 @@ void OBSBasic::RenameTransition()
obs_source_set_name(transition, name.c_str());
int idx = ui->transitions->findData(variant);
if (idx != -1)
if (idx != -1) {
ui->transitions->setItemText(idx, QT_UTF8(name.c_str()));
ClearQuickTransitionWidgets();
RefreshQuickTransitions();
}
}
}
@@ -919,6 +928,31 @@ void OBSBasic::QuickTransitionRemoveClicked()
quickTransitions.erase(quickTransitions.begin() + idx);
}
void OBSBasic::ClearQuickTransitionWidgets()
{
if (!IsPreviewProgramMode())
return;
QVBoxLayout *programLayout =
reinterpret_cast<QVBoxLayout*>(programOptions->layout());
for (int idx = 0;; idx++) {
QLayoutItem *item = programLayout->itemAt(idx);
if (!item)
break;
QWidget *widget = item->widget();
if (!widget)
continue;
int id = widget->property("id").toInt();
if (id != 0) {
delete widget;
idx--;
}
}
}
void OBSBasic::RefreshQuickTransitions()
{
if (!IsPreviewProgramMode())
+1
View File
@@ -282,6 +282,7 @@ private:
void RemoveQuickTransitionHotkey(QuickTransition *qt);
void LoadQuickTransitions(obs_data_array_t *array);
obs_data_array_t *SaveQuickTransitions();
void ClearQuickTransitionWidgets();
void RefreshQuickTransitions();
void CreateDefaultQuickTransitions();