From 09697c50bf8815cffdca16508f87b751ad7d7ce4 Mon Sep 17 00:00:00 2001 From: cancel Date: Mon, 3 Dec 2018 09:32:08 +0900 Subject: [PATCH] Add field_resize_raw_if_necessary --- field.c | 6 ++++++ field.h | 1 + tui_main.c | 2 ++ 3 files changed, 9 insertions(+) diff --git a/field.c b/field.c index 80d0385..bead7ff 100644 --- a/field.c +++ b/field.c @@ -24,6 +24,12 @@ void field_resize_raw(Field* f, Usz height, Usz width) { f->width = (U16)width; } +void field_resize_raw_if_necessary(Field* field, Usz height, Usz width) { + if (field->height != height || field->width != width) { + field_resize_raw(field, height, width); + } +} + void field_deinit(Field* f) { free(f->buffer); } void field_copy_subrect(Field* src, Field* dest, Usz src_y, Usz src_x, diff --git a/field.h b/field.h index e37eada..787cee4 100644 --- a/field.h +++ b/field.h @@ -4,6 +4,7 @@ void field_init(Field* field); void field_init_fill(Field* field, Usz height, Usz width, Glyph fill_char); void field_resize_raw(Field* field, Usz height, Usz width); +void field_resize_raw_if_necessary(Field* field, Usz height, Usz width); void field_deinit(Field* field); void field_copy_subrect(Field* src, Field* dest, Usz src_y, Usz src_x, Usz dest_y, Usz dest_x, Usz height, Usz width); diff --git a/tui_main.c b/tui_main.c index 72c2442..50688be 100644 --- a/tui_main.c +++ b/tui_main.c @@ -245,6 +245,8 @@ void undo_history_push(Undo_history* hist, Field* field, Usz tick_num) { hist->first = new_node->next; hist->first->prev = NULL; } + field_resize_raw_if_necessary(&new_node->field, field->height, + field->width); } else { new_node = malloc(sizeof(Undo_node)); ++hist->count;