Add bookmarks for easier code navigation
This commit is contained in:
@ -292,6 +292,7 @@ void TextEdit::Text::insert(int p_at, const String &p_text) {
|
||||
line.marked = false;
|
||||
line.safe = false;
|
||||
line.breakpoint = false;
|
||||
line.bookmark = false;
|
||||
line.hidden = false;
|
||||
line.width_cache = -1;
|
||||
line.wrap_amount_cache = -1;
|
||||
@ -346,7 +347,7 @@ void TextEdit::_update_scrollbars() {
|
||||
if (line_numbers)
|
||||
total_width += cache.line_number_w;
|
||||
|
||||
if (draw_breakpoint_gutter) {
|
||||
if (draw_breakpoint_gutter || draw_bookmark_gutter) {
|
||||
total_width += cache.breakpoint_gutter_width;
|
||||
}
|
||||
|
||||
@ -605,7 +606,7 @@ void TextEdit::_notification(int p_what) {
|
||||
draw_caret = false;
|
||||
}
|
||||
|
||||
if (draw_breakpoint_gutter) {
|
||||
if (draw_breakpoint_gutter || draw_bookmark_gutter) {
|
||||
breakpoint_gutter_width = (get_row_height() * 55) / 100;
|
||||
cache.breakpoint_gutter_width = breakpoint_gutter_width;
|
||||
} else {
|
||||
@ -954,6 +955,16 @@ void TextEdit::_notification(int p_what) {
|
||||
#endif
|
||||
}
|
||||
|
||||
// draw bookmark marker
|
||||
if (text.is_bookmark(line)) {
|
||||
if (draw_bookmark_gutter) {
|
||||
int vertical_gap = (get_row_height() * 40) / 100;
|
||||
int horizontal_gap = (cache.breakpoint_gutter_width * 30) / 100;
|
||||
int marker_radius = get_row_height() - (vertical_gap * 2);
|
||||
VisualServer::get_singleton()->canvas_item_add_circle(ci, Point2(cache.style_normal->get_margin(MARGIN_LEFT) + horizontal_gap - 2 + marker_radius / 2, ofs_y + vertical_gap + marker_radius / 2), marker_radius, Color(cache.bookmark_color.r, cache.bookmark_color.g, cache.bookmark_color.b));
|
||||
}
|
||||
}
|
||||
|
||||
// draw breakpoint marker
|
||||
if (text.is_breakpoint(line)) {
|
||||
if (draw_breakpoint_gutter) {
|
||||
@ -4503,6 +4514,7 @@ void TextEdit::_update_caches() {
|
||||
cache.mark_color = get_color("mark_color");
|
||||
cache.current_line_color = get_color("current_line_color");
|
||||
cache.line_length_guideline_color = get_color("line_length_guideline_color");
|
||||
cache.bookmark_color = get_color("bookmark_color");
|
||||
cache.breakpoint_color = get_color("breakpoint_color");
|
||||
cache.executing_line_color = get_color("executing_line_color");
|
||||
cache.code_folding_color = get_color("code_folding_color");
|
||||
@ -5099,6 +5111,37 @@ void TextEdit::clear_executing_line() {
|
||||
update();
|
||||
}
|
||||
|
||||
bool TextEdit::is_line_set_as_bookmark(int p_line) const {
|
||||
|
||||
ERR_FAIL_INDEX_V(p_line, text.size(), false);
|
||||
return text.is_bookmark(p_line);
|
||||
}
|
||||
|
||||
void TextEdit::set_line_as_bookmark(int p_line, bool p_bookmark) {
|
||||
|
||||
ERR_FAIL_INDEX(p_line, text.size());
|
||||
text.set_bookmark(p_line, p_bookmark);
|
||||
update();
|
||||
}
|
||||
|
||||
void TextEdit::get_bookmarks(List<int> *p_bookmarks) const {
|
||||
|
||||
for (int i = 0; i < text.size(); i++) {
|
||||
if (text.is_bookmark(i))
|
||||
p_bookmarks->push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
Array TextEdit::get_bookmarks_array() const {
|
||||
|
||||
Array arr;
|
||||
for (int i = 0; i < text.size(); i++) {
|
||||
if (text.is_bookmark(i))
|
||||
arr.append(i);
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
bool TextEdit::is_line_set_as_breakpoint(int p_line) const {
|
||||
|
||||
ERR_FAIL_INDEX_V(p_line, text.size(), false);
|
||||
@ -6176,6 +6219,15 @@ void TextEdit::set_line_length_guideline_column(int p_column) {
|
||||
update();
|
||||
}
|
||||
|
||||
void TextEdit::set_bookmark_gutter_enabled(bool p_draw) {
|
||||
draw_bookmark_gutter = p_draw;
|
||||
update();
|
||||
}
|
||||
|
||||
bool TextEdit::is_bookmark_gutter_enabled() const {
|
||||
return draw_bookmark_gutter;
|
||||
}
|
||||
|
||||
void TextEdit::set_breakpoint_gutter_enabled(bool p_draw) {
|
||||
draw_breakpoint_gutter = p_draw;
|
||||
update();
|
||||
@ -6568,6 +6620,7 @@ TextEdit::TextEdit() {
|
||||
line_numbers_zero_padded = false;
|
||||
line_length_guideline = false;
|
||||
line_length_guideline_col = 80;
|
||||
draw_bookmark_gutter = false;
|
||||
draw_breakpoint_gutter = false;
|
||||
draw_fold_gutter = false;
|
||||
draw_info_gutter = false;
|
||||
|
||||
Reference in New Issue
Block a user