HackStudio: Migrate execution-position indicator to TextEditor API

This commit is contained in:
Sam Atkins 2023-03-15 11:06:53 +00:00 committed by Andreas Kling
parent 99221a436e
commit 620bf45f43
2 changed files with 11 additions and 6 deletions

View file

@ -95,6 +95,12 @@ Editor::Editor()
remove_breakpoint(line_index);
}).release_value_but_fixme_should_propagate_errors();
m_execution_indicator_id = register_gutter_indicator(
[&](auto& painter, Gfx::IntRect rect, size_t) {
auto const& icon = current_position_icon_bitmap();
painter.draw_scaled_bitmap(rect, icon, icon.rect());
}).release_value_but_fixme_should_propagate_errors();
if (Config::read_string("HackStudio"sv, "Global"sv, "DocumentationSearchPaths"sv).is_empty()) {
Config::write_string("HackStudio"sv, "Global"sv, "DocumentationSearchPaths"sv, "[\"/usr/share/man/man2\", \"/usr/share/man/man3\"]"sv);
}
@ -158,11 +164,6 @@ void Editor::paint_event(GUI::PaintEvent& event)
size_t first_visible_line = text_position_at(event.rect().top_left()).line();
size_t last_visible_line = text_position_at(event.rect().bottom_right()).line();
if (execution_position().has_value()) {
auto const& icon = current_position_icon_bitmap();
painter.blit(gutter_icon_rect(execution_position().value()).top_left(), icon, icon.rect());
}
if (wrapper().git_repo()) {
for (auto& hunk : wrapper().hunks()) {
auto start_line = hunk.target_start_line;
@ -452,9 +453,11 @@ void Editor::navigate_to_include_if_available(DeprecatedString path)
void Editor::set_execution_position(size_t line_number)
{
if (execution_position().has_value())
remove_gutter_indicator(m_execution_indicator_id, execution_position().value());
add_gutter_indicator(m_execution_indicator_id, line_number);
code_document().set_execution_position(line_number);
scroll_position_into_view({ line_number, 0 });
update(gutter_icon_rect(line_number));
}
void Editor::clear_execution_position()
@ -464,6 +467,7 @@ void Editor::clear_execution_position()
}
size_t previous_position = execution_position().value();
code_document().clear_execution_position();
remove_gutter_indicator(m_execution_indicator_id, previous_position);
update(gutter_icon_rect(previous_position));
}

View file

@ -124,6 +124,7 @@ private:
bool m_use_semantic_syntax_highlighting { false };
GutterIndicatorID m_breakpoint_indicator_id;
GutterIndicatorID m_execution_indicator_id;
};
}