From 86afee9b5c4954fda84d500b85328cca18ee3de4 Mon Sep 17 00:00:00 2001 From: hachem Date: Fri, 28 Aug 2026 21:32:31 +0200 Subject: feat: breakpoint conditions and skip counts --- src/ui/ui.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/ui/ui.cpp') diff --git a/src/ui/ui.cpp b/src/ui/ui.cpp index 8ba1155..01c5165 100644 --- a/src/ui/ui.cpp +++ b/src/ui/ui.cpp @@ -523,12 +523,14 @@ namespace Hsdbg ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_ScrollY; - if (ImGui::BeginTable("##breakpoints", 6, flags)) + if (ImGui::BeginTable("##breakpoints", 8, flags)) { ImGui::TableSetupColumn("on", ImGuiTableColumnFlags_WidthFixed, 26.0f); ImGui::TableSetupColumn("id", ImGuiTableColumnFlags_WidthFixed, 30.0f); ImGui::TableSetupColumn("location"); ImGui::TableSetupColumn("address"); + ImGui::TableSetupColumn("condition"); + ImGui::TableSetupColumn("skip", ImGuiTableColumnFlags_WidthFixed, 50.0f); ImGui::TableSetupColumn("hits", ImGuiTableColumnFlags_WidthFixed, 40.0f); ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 26.0f); ImGui::TableSetupScrollFreeze(0, 1); @@ -577,6 +579,31 @@ namespace Hsdbg ImGui::TextDisabled("pending"); } + // imgui keeps its own buffer while an input is focused, so + // these copies only seed it and receive the final text + ImGui::TableNextColumn(); + std::string condition = breakpoint.condition; + ImGui::SetNextItemWidth(-1.0f); + + if (ImGui::InputTextWithHint("##condition", + "stop when", + &condition, + ImGuiInputTextFlags_EnterReturnsTrue)) + { + debugger.set_breakpoint_condition(breakpoint.id, condition); + } + + ImGui::TableNextColumn(); + int ignore_count = static_cast(breakpoint.ignore_count); + ImGui::SetNextItemWidth(-1.0f); + + if (ImGui::InputInt("##skip", &ignore_count, 0, 0, + ImGuiInputTextFlags_EnterReturnsTrue)) + { + debugger.set_breakpoint_ignore_count(breakpoint.id, + static_cast(std::max(ignore_count, 0))); + } + ImGui::TableNextColumn(); ImGui::Text("%u", breakpoint.hit_count); -- cgit v1.3