From 25c8f4b588b185e49f1a45fadd6c44e3d6513124 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Mon, 11 Aug 2025 21:46:47 +0200 Subject: [PATCH] fix: Jump to certain array-member patterns not working Fixes #2398 --- lib/external/pattern_language | 2 +- plugins/ui/source/ui/pattern_drawer.cpp | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 3e98b047c..e6cbec137 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 3e98b047c52c07bb1816bd0936f561ce7797469d +Subproject commit e6cbec137d7051fe80f23f0e4a893c54a141dfac diff --git a/plugins/ui/source/ui/pattern_drawer.cpp b/plugins/ui/source/ui/pattern_drawer.cpp index 0a057b7c7..14f3a84c6 100644 --- a/plugins/ui/source/ui/pattern_drawer.cpp +++ b/plugins/ui/source/ui/pattern_drawer.cpp @@ -983,7 +983,30 @@ namespace hex::ui { ImGui::TableNextColumn(); ImGui::TableNextColumn(); + bool shouldOpen = false; + if (m_jumpToPattern != nullptr) { + if (m_jumpToPattern == &pattern) { + ImGui::SetScrollHereY(); + m_jumpToPattern = nullptr; + } + else { + auto parent = m_jumpToPattern->getParent(); + while (parent != nullptr) { + if (&pattern == parent) { + ImGui::SetScrollHereY(); + shouldOpen = true; + break; + } + + parent = parent->getParent(); + } + } + } + chunkOpen = highlightWhenSelected(startOffset, ((endOffset + endSize) - startOffset) - 1, [&]{ + if (shouldOpen) + ImGui::SetNextItemOpen(true, ImGuiCond_Always); + ImGui::PushStyleVarX(ImGuiStyleVar_FramePadding, 0.0F); const auto result = ImGui::TreeNodeEx(fmt::format("##TreeNode_{:X}", endOffset).c_str(), ImGuiTreeNodeFlags_DrawLinesToNodes | ImGuiTreeNodeFlags_SpanLabelWidth | ImGuiTreeNodeFlags_OpenOnArrow); ImGui::PopStyleVar();