From 00ae45bdb7897d638799dfd83d4da52581727ff4 Mon Sep 17 00:00:00 2001 From: cancel Date: Tue, 11 Dec 2018 21:15:49 +0900 Subject: [PATCH] Add filling with character when rect is selected --- tui_main.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/tui_main.c b/tui_main.c index 1e76308..ab402b8 100644 --- a/tui_main.c +++ b/tui_main.c @@ -1216,22 +1216,6 @@ void app_add_piano_bits_for_character(App_state* a, char c) { a->piano_bits |= added_bits; } -void app_input_character(App_state* a, char c) { - bool ok = c >= '!' && c <= '~'; - if (!ok) - return; - switch (a->input_mode) { - case Tui_input_mode_normal: - case Tui_input_mode_append: - case Tui_input_mode_selresize: - app_write_character(a, c); - break; - case Tui_input_mode_piano: - app_add_piano_bits_for_character(a, c); - break; - } -} - bool app_try_selection_clipped_to_field(App_state const* a, Usz* out_y, Usz* out_x, Usz* out_h, Usz* out_w) { Usz curs_y = a->tui_cursor.y; @@ -1277,6 +1261,28 @@ bool app_copy_selection_to_clipbard(App_state* a) { return true; } +void app_input_character(App_state* a, char c) { + switch (a->input_mode) { + case Tui_input_mode_append: + app_write_character(a, c); + break; + case Tui_input_mode_normal: + case Tui_input_mode_selresize: + if (a->tui_cursor.h <= 1 && a->tui_cursor.w <= 1) { + app_write_character(a, c); + } else { + undo_history_push(&a->undo_hist, &a->field, a->tick_num); + app_fill_selection_with_char(a, c); + a->needs_remarking = true; + a->is_draw_dirty = true; + } + break; + case Tui_input_mode_piano: + app_add_piano_bits_for_character(a, c); + break; + } +} + typedef enum { App_input_cmd_undo, App_input_cmd_toggle_append_mode,