UI: Move "Add [transition]" to bottom of combo

Instead of having "Add [transition]" at the top of the combo box
blocking out the values, move the add values to the bottom of the box
instead for slightly better UX.
This commit is contained in:
jp9000 2020-09-28 21:50:17 -07:00
parent 4a9bb86916
commit 6460579fb6

View File

@ -50,8 +50,14 @@ static inline QString MakeQuickTransitionText(QuickTransition *qt)
void OBSBasic::InitDefaultTransitions()
{
struct AddTransitionVal {
QString id;
QString name;
};
ui->transitions->blockSignals(true);
std::vector<OBSSource> transitions;
std::vector<AddTransitionVal> addables;
size_t idx = 0;
const char *id;
@ -73,22 +79,26 @@ void OBSBasic::InitDefaultTransitions()
obs_source_release(tr);
} else {
QString addString = QTStr("Add") +
QStringLiteral(": ") +
QT_UTF8(name);
ui->transitions->addItem(
addString,
QVariant::fromValue(QString(QT_UTF8(id))));
AddTransitionVal val;
val.name = QTStr("Add") + QStringLiteral(": ") +
QT_UTF8(name);
val.id = QT_UTF8(id);
addables.push_back(val);
}
}
if (ui->transitions->count())
ui->transitions->insertSeparator(ui->transitions->count());
for (OBSSource &tr : transitions) {
ui->transitions->addItem(QT_UTF8(obs_source_get_name(tr)),
QVariant::fromValue(OBSSource(tr)));
}
if (addables.size())
ui->transitions->insertSeparator(ui->transitions->count());
for (AddTransitionVal &val : addables) {
ui->transitions->addItem(val.name, QVariant::fromValue(val.id));
}
ui->transitions->blockSignals(false);
}