mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 13:08:50 +02:00
UI: Sort 'Add' source popup menu
This commit is contained in:
parent
4584ef2511
commit
dc2915dc3b
@ -3185,22 +3185,39 @@ QMenu *OBSBasic::CreateAddSourcePopupMenu()
|
|||||||
|
|
||||||
QMenu *popup = new QMenu(QTStr("Add"), this);
|
QMenu *popup = new QMenu(QTStr("Add"), this);
|
||||||
|
|
||||||
auto addSource = [this, popup] (const char *type, const char *name) {
|
auto getActionAfter = [] (QMenu *menu, const QString &name)
|
||||||
QAction *popupItem = new QAction(QT_UTF8(name), this);
|
{
|
||||||
|
QList<QAction*> actions = menu->actions();
|
||||||
|
|
||||||
|
for (QAction *menuAction : actions) {
|
||||||
|
if (menuAction->text().compare(name) >= 0)
|
||||||
|
return menuAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (QAction*)nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto addSource = [this, getActionAfter] (QMenu *popup,
|
||||||
|
const char *type, const char *name)
|
||||||
|
{
|
||||||
|
QString qname = QT_UTF8(name);
|
||||||
|
QAction *popupItem = new QAction(qname, this);
|
||||||
popupItem->setData(QT_UTF8(type));
|
popupItem->setData(QT_UTF8(type));
|
||||||
connect(popupItem, SIGNAL(triggered(bool)),
|
connect(popupItem, SIGNAL(triggered(bool)),
|
||||||
this, SLOT(AddSourceFromAction()));
|
this, SLOT(AddSourceFromAction()));
|
||||||
popup->addAction(popupItem);
|
|
||||||
|
QAction *after = getActionAfter(popup, qname);
|
||||||
|
popup->insertAction(after, popupItem);
|
||||||
};
|
};
|
||||||
|
|
||||||
while (obs_enum_input_types(idx++, &type)) {
|
while (obs_enum_input_types(idx++, &type)) {
|
||||||
const char *name = obs_source_get_display_name(type);
|
const char *name = obs_source_get_display_name(type);
|
||||||
|
|
||||||
addSource(type, name);
|
addSource(popup, type, name);
|
||||||
foundValues = true;
|
foundValues = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
addSource("scene", Str("Basic.Scene"));
|
addSource(popup, "scene", Str("Basic.Scene"));
|
||||||
|
|
||||||
if (!foundValues) {
|
if (!foundValues) {
|
||||||
delete popup;
|
delete popup;
|
||||||
|
Loading…
Reference in New Issue
Block a user