diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index ab6d1953e..257a7a589 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -948,6 +948,7 @@ "hex.builtin.view.pattern_data.name": "Pattern Data", "hex.builtin.view.pattern_data.section.main": "Main", "hex.builtin.view.pattern_data.section.view_raw": "View Raw Data", + "hex.builtin.view.pattern_data.simplified_editor": "Simplified", "hex.builtin.view.pattern_editor.accept_pattern": "Accept pattern", "hex.builtin.view.pattern_editor.accept_pattern.desc": "One or more Patterns compatible with this data type has been found", "hex.builtin.view.pattern_editor.accept_pattern.pattern_language": "Patterns", diff --git a/plugins/builtin/source/content/views/view_pattern_data.cpp b/plugins/builtin/source/content/views/view_pattern_data.cpp index 23110f792..1d7097c2c 100644 --- a/plugins/builtin/source/content/views/view_pattern_data.cpp +++ b/plugins/builtin/source/content/views/view_pattern_data.cpp @@ -155,11 +155,17 @@ namespace hex::plugin::builtin { constexpr static auto SimplifiedEditorAttribute = "hex::editor_export"; if (TRY_LOCK(ContentRegistry::PatternLanguage::getRuntimeLock()) && patternsValid) { - const auto &patterns = runtime.getPatternsWithAttribute(SimplifiedEditorAttribute); + const auto &patternSet = runtime.getPatternsWithAttribute(SimplifiedEditorAttribute); + std::vector patterns = { patternSet.begin(), patternSet.end() }; + std::ranges::sort(patterns, [](const pl::ptrn::Pattern *a, const pl::ptrn::Pattern *b) { + return a->getOffset() < b->getOffset() || a->getDisplayName() < b->getDisplayName(); + }); + if (!patterns.empty()) { - const auto tabName = "hex.builtin.view.pattern_data.simplified_editor"_lang; - ImGui::TabItemSpacing("##spacing", 0, ImGui::GetContentRegionAvail().x - ImGui::TabItemCalcSize(tabName, false).x); - if (ImGui::BeginTabItem(tabName, nullptr, ImGuiTabItemFlags_Trailing)) { + constexpr auto TabName = "hex.builtin.view.pattern_data.simplified_editor"_lang; + + ImGui::TabItemSpacing("##spacing", 0, ImGui::GetContentRegionAvail().x - ImGui::TabItemCalcSize(TabName, false).x); + if (ImGui::BeginTabItem(TabName, nullptr, ImGuiTabItemFlags_Trailing)) { for (const auto &pattern : patterns) { try { const auto attribute = pattern->getAttributeArguments(SimplifiedEditorAttribute);