summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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,