From 12863ff7c05e4abe601890157b222eaee9737ad5 Mon Sep 17 00:00:00 2001 From: Lars Henriksen Date: Fri, 10 Jan 2020 20:39:19 +0100 Subject: Refactor cut and paste registers Register REG_BLACK_HOLE can neither be copied into nor pasted from and has been removed from the input routine. Register 36 was not used. Signed-off-by: Lars Henriksen Signed-off-by: Lukas Fleischer --- src/ui-day.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'src/ui-day.c') diff --git a/src/ui-day.c b/src/ui-day.c index e0e306b..912f700 100644 --- a/src/ui-day.c +++ b/src/ui-day.c @@ -36,7 +36,8 @@ #include "calcurse.h" -struct day_item day_cut[38] = { {0, 0, 0, {NULL}} }; +/* Cut & paste registers. */ +static struct day_item day_cut[REG_BLACK_HOLE + 1]; /* * Set the selected day in the calendar from the selected item in the APP panel. @@ -834,11 +835,7 @@ void ui_day_item_delete(unsigned reg) return; } } - - ui_day_item_cut_free(reg); - p = day_cut_item(listbox_get_sel(&lb_apt)); - day_cut[reg].type = p->type; - day_cut[reg].item = p->item; + ui_day_item_cut(reg); /* Keep the selection on the same day. */ day_set_sel_data(day_get_item(listbox_get_sel(&lb_apt) - 1)); io_set_modified(); @@ -995,11 +992,7 @@ void ui_day_item_repeat(void) /* NOTREACHED */ } day_set_sel_data(&d); - - ui_day_item_cut_free(REG_BLACK_HOLE); - p = day_cut_item(item_nb); - day_cut[REG_BLACK_HOLE].type = p->type; - day_cut[REG_BLACK_HOLE].item = p->item; + ui_day_item_cut(REG_BLACK_HOLE); io_set_modified(); ui_calendar_monthly_view_cache_set_invalid(); @@ -1008,9 +1001,23 @@ cleanup: mem_free(msg_asktype); } +/* Delete an item and save it in a register. */ +void ui_day_item_cut(unsigned reg) +{ + struct day_item *p; + + ui_day_item_cut_free(reg); + + p = day_cut_item(listbox_get_sel(&lb_apt)); + day_cut[reg].type = p->type; + day_cut[reg].item = p->item; +} + /* Free the current cut item, if any. */ void ui_day_item_cut_free(unsigned reg) { + EXIT_IF(reg > REG_BLACK_HOLE, "illegal register"); + if (!day_cut[reg].type) { /* No previously cut item, don't free anything. */ return; -- cgit v1.2.3-54-g00ecf