diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 82bea525e..b603a9236 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 82bea525ec3985c882be0eef0ff72dceb23712e4 +Subproject commit b603a9236b0436906a14a6c68e6535603b3cf332 diff --git a/plugins/ui/source/ui/pattern_drawer.cpp b/plugins/ui/source/ui/pattern_drawer.cpp index dfc229849..d4bbb05ab 100644 --- a/plugins/ui/source/ui/pattern_drawer.cpp +++ b/plugins/ui/source/ui/pattern_drawer.cpp @@ -350,14 +350,10 @@ namespace hex::ui { void PatternDrawer::drawValueColumn(pl::ptrn::Pattern& pattern) { ImGui::TableNextColumn(); - std::string value; - try { - value = pattern.getFormattedValue(); - } catch (const std::exception &e) { - value = e.what(); - } - + const auto value = pattern.getFormattedValue(); + const bool valueValid = pattern.hasValidFormattedValue(); const auto width = ImGui::GetColumnWidth(); + if (const auto &visualizeArgs = pattern.getAttributeArguments("hex::visualize"); !visualizeArgs.empty()) { ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0, 0)); ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(0, 0.5F)); @@ -389,7 +385,9 @@ namespace hex::ui { } else if (const auto &inlineVisualizeArgs = pattern.getAttributeArguments("hex::inline_visualize"); !inlineVisualizeArgs.empty()) { m_visualizerDrawer.drawVisualizer(ContentRegistry::PatternLanguage::impl::getInlineVisualizers(), inlineVisualizeArgs, pattern, true); } else { + if (!valueValid) ImGui::PushStyleColor(ImGuiCol_Text, ImGuiExt::GetCustomColorU32(ImGuiCustomCol_LoggerError)); ImGuiExt::TextFormatted("{}", value); + if (!valueValid) ImGui::PopStyleColor(); } if (ImGui::CalcTextSize(value.c_str()).x > width) {