diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h index b4531db8959..45c3abc08cd 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h @@ -49,16 +49,19 @@ struct AddResourceHandler public: AddResourceHandler( const QString &_category, const QString &_filter, - AddResourceOperation _operation) + AddResourceOperation _operation, + int _priority = 0) : category(_category) ,filter(_filter) ,operation(_operation) + ,piority(_priority) { } QString category; QString filter; AddResourceOperation operation; + int piority; }; class DesignerActionToolBar : public Utils::StyledBar diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 6751ebf6e38..a8ce98471a7 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -37,6 +37,7 @@ #include #include +#include #include #include #include @@ -395,14 +396,26 @@ void ItemLibraryWidget::addResources() QTC_ASSERT(document, return); QList handlers = QmlDesignerPlugin::instance()->viewManager().designerActionManager().addResourceHandler(); + QMultiMap map; for (const AddResourceHandler &handler : handlers) { map.insert(handler.category, handler.filter); } + QMap priorities; + for (const AddResourceHandler &handler : handlers) { + priorities.insert(handler.category, handler.piority); + } + + QStringList sortedKeys = map.uniqueKeys(); + Utils::sort(sortedKeys, [&priorities](const QString &first, + const QString &second){ + return priorities.value(first) < priorities.value(second); + }); + QStringList filters; - for (const QString &key : map.uniqueKeys()) { + for (const QString &key : sortedKeys) { QString str = key + " ("; str.append(map.values(key).join(" ")); str.append(")");