From 0f24a6bd7f6fb9cb3a26fb87e213efcc29889b9a Mon Sep 17 00:00:00 2001 From: TT Date: Sun, 29 Sep 2019 07:01:23 +0900 Subject: [PATCH] feat: select active on marker menu, disable if the item is active --- ui.c | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/ui.c b/ui.c index d3948fa..8cccb6d 100644 --- a/ui.c +++ b/ui.c @@ -834,15 +834,38 @@ menu_marker_op_cb(int item) //redraw_all(); } +void +active_marker_select(int item) +{ + if (item == -1) { + active_marker = previous_marker; + previous_marker = -1; + if (active_marker == -1) { + choose_active_marker(); + } + } else { + if (previous_marker != active_marker) + previous_marker = active_marker; + active_marker = item; + } +} + static void menu_marker_sel_cb(int item) { if (item >= 0 && item < 4) { - // enable specified marker - markers[item].enabled = TRUE; - if (previous_marker != active_marker) - previous_marker = active_marker; - active_marker = item; + if (markers[item].enabled) { + if (item == active_marker) { + // disable if active trace is selected + markers[item].enabled = FALSE; + active_marker_select(-1); + } else { + active_marker_select(item); + } + } else { + markers[item].enabled = TRUE; + active_marker_select(item); + } } else if (item == 4) { /* all off */ markers[0].enabled = FALSE; markers[1].enabled = FALSE; @@ -851,10 +874,8 @@ menu_marker_sel_cb(int item) previous_marker = -1; active_marker = -1; } - if (active_marker >= 0) - redraw_marker(active_marker, TRUE); + redraw_marker(active_marker, TRUE); draw_menu(); - //ui_mode_normal(); } const menuitem_t menu_calop[] = {