Explorar o código

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.
jp9000 %!s(int64=5) %!d(string=hai) anos
pai
achega
6460579fb6
Modificáronse 1 ficheiros con 19 adicións e 9 borrados
  1. 19 9
      UI/window-basic-main-transitions.cpp

+ 19 - 9
UI/window-basic-main-transitions.cpp

@@ -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);
 }