summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2025-11-05 09:22:37 +0100
committerAlbert Cervin <albert@acervin.com>2025-11-05 09:22:37 +0100
commit9ed37096c4e79169ebd6a037805ff7f2754326f7 (patch)
tree295bb9d5e364d8fb922034ac2329cfdce11426f8
parent1ee3b764d7cdd31570e53e446c963725f3a2f962 (diff)
downloaddged-9ed37096c4e79169ebd6a037805ff7f2754326f7.tar.gz
dged-9ed37096c4e79169ebd6a037805ff7f2754326f7.tar.xz
dged-9ed37096c4e79169ebd6a037805ff7f2754326f7.zip
Add some more needs_render
Add to buffer_view when jumping to a location.
-rw-r--r--src/dged/buffer_view.c7
-rw-r--r--src/dged/buffer_view.h2
2 files changed, 8 insertions, 1 deletions
diff --git a/src/dged/buffer_view.c b/src/dged/buffer_view.c
index 9129147..2a58687 100644
--- a/src/dged/buffer_view.c
+++ b/src/dged/buffer_view.c
@@ -35,6 +35,7 @@ struct buffer_view buffer_view_create(struct buffer *buffer, bool modeline,
.modeline = modeline,
.line_numbers = line_numbers,
.fringe_width = 0,
+ .needs_render = false,
};
return v;
@@ -66,14 +67,17 @@ void buffer_view_add(struct buffer_view *view, uint8_t *txt, uint32_t nbytes) {
}
void buffer_view_goto_beginning(struct buffer_view *view) {
+ view->needs_render = true;
view->dot = (struct location){.line = 0, .col = 0};
}
void buffer_view_goto_end(struct buffer_view *view) {
+ view->needs_render = true;
view->dot = buffer_end(view->buffer);
}
void buffer_view_goto(struct buffer_view *view, struct location to) {
+ view->needs_render = true;
view->dot = buffer_clamp(view->buffer, (int64_t)to.line, (int64_t)to.col);
}
@@ -423,7 +427,7 @@ static void render_modeline(struct buffer_view *view,
bool buffer_view_update(struct buffer_view *view,
struct buffer_view_update_params *params) {
- bool needs_render = false;
+ bool needs_render = view->needs_render;
struct timer *buffer_update_timer =
timer_start("update-windows.buffer-update");
buffer_update(view->buffer);
@@ -527,6 +531,7 @@ bool buffer_view_update(struct buffer_view *view,
command_list_draw_command_list(params->commands, buf_cmds);
timer_stop(render_buffer_timer);
+ view->needs_render = false;
return needs_render;
}
diff --git a/src/dged/buffer_view.h b/src/dged/buffer_view.h
index d1b6b4a..e49a78d 100644
--- a/src/dged/buffer_view.h
+++ b/src/dged/buffer_view.h
@@ -38,6 +38,8 @@ struct buffer_view {
/** True if the start of a selection has been set */
bool mark_set;
+
+ bool needs_render;
};
struct buffer_view buffer_view_create(struct buffer *buffer, bool modeline,