diff --git a/nanovna.h b/nanovna.h index a35c5e3..309054a 100644 --- a/nanovna.h +++ b/nanovna.h @@ -1198,6 +1198,7 @@ void menu_push_lowoutput(void); void menu_push_highoutput(void); void menu_move_top(void); void draw_menu(void); +void draw_menu_mask(uint32_t mask); void refres_sweep_menu(void); int check_touched(void); int invoke_quick_menu(int); diff --git a/ui.c b/ui.c index 93facb1..437d071 100644 --- a/ui.c +++ b/ui.c @@ -22,6 +22,7 @@ #include "chprintf.h" #include "nanovna.h" #include +#include #include #pragma GCC push_options @@ -230,8 +231,8 @@ static int btn_wait_release(void) //******************************************************************************* #ifdef SOFTWARE_TOUCH // ADC read count for measure X and Y (2^N count) -#define TOUCH_X_N 2 -#define TOUCH_Y_N 2 +#define TOUCH_X_N 3 +#define TOUCH_Y_N 3 static int touch_measure_y(void) { @@ -1163,7 +1164,7 @@ static const uint8_t check_box[] = { #endif static void -draw_menu_buttons(const menuitem_t *menu, int only) +draw_menu_buttons(const menuitem_t *menu, uint32_t mask) { int i = 0; int y = 0; @@ -1174,12 +1175,12 @@ draw_menu_buttons(const menuitem_t *menu, int only) if (menuDisabled(menu[i].type)) //not applicable to mode continue; #ifdef __SWEEP_RESTART__ - if (only != -1 && only != i) { + if ((mask&(1< BUTTON_DOWN_LONG_TICKS) { + if (dt > wait) { +// wait = MS2ST(100); prev_touch_time = ticks; touch_position(&touch_x, &touch_y); - if (touch_x != prev_touch_x /* - 1 || prev_touch_x + 1 < touch_x */ ) { + if (abs(touch_x - prev_touch_x) > 1) { fetch_numeric_target(keypad); int new_slider = touch_x - LCD_WIDTH/2; // Can have negative outcome if (new_slider < - (MENU_FORM_WIDTH-8)/2 - 1) @@ -1362,7 +1362,7 @@ menu_select_touch(int i, int pos) if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && keypad == KM_CENTER){ #define TOUCH_DEAD_ZONE 40 if (mode == SL_UNKNOWN ) { - if (setting.slider_position - TOUCH_DEAD_ZONE < new_slider && new_slider < setting.slider_position + TOUCH_DEAD_ZONE) { // Pick up slider + if (abs(setting.slider_position - new_slider) < TOUCH_DEAD_ZONE) { // Pick up slider mode = SL_MOVE; } else { mode = SL_SPAN; @@ -1383,7 +1383,7 @@ menu_select_touch(int i, int pos) set_keypad_value(keypad); dirty = false; perform(false, 0, uistat.freq_value, false); - draw_menu(); + draw_menu_mask(1<