diff --git a/src/widgets/roller/lv_roller.c b/src/widgets/roller/lv_roller.c index 4c7893ed6b..efdb8d81d0 100644 --- a/src/widgets/roller/lv_roller.c +++ b/src/widgets/roller/lv_roller.c @@ -349,10 +349,14 @@ static void lv_roller_event(const lv_obj_class_t * class_p, lv_event_t * e) refr_position(obj, LV_ANIM_OFF); } else if(code == LV_EVENT_PRESSED) { + if(roller->option_cnt <= 1) return; + roller->moved = 0; lv_anim_delete(get_label(obj), set_y_anim); } else if(code == LV_EVENT_PRESSING) { + if(roller->option_cnt <= 1) return; + lv_indev_t * indev = lv_indev_active(); lv_point_t p; lv_indev_get_vect(indev, &p); @@ -364,6 +368,8 @@ static void lv_roller_event(const lv_obj_class_t * class_p, lv_event_t * e) } } else if(code == LV_EVENT_RELEASED || code == LV_EVENT_PRESS_LOST) { + if(roller->option_cnt <= 1) return; + release_handler(obj); } else if(code == LV_EVENT_FOCUSED) { @@ -399,6 +405,8 @@ static void lv_roller_event(const lv_obj_class_t * class_p, lv_event_t * e) } } else if(code == LV_EVENT_KEY) { + if(roller->option_cnt <= 1) return; + uint32_t c = lv_event_get_key(e); if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) { if(roller->sel_opt_id + 1 < roller->option_cnt) { @@ -416,6 +424,8 @@ static void lv_roller_event(const lv_obj_class_t * class_p, lv_event_t * e) } } else if(code == LV_EVENT_ROTARY) { + if(roller->option_cnt <= 1) return; + int32_t r = lv_event_get_rotary_diff(e); int32_t new_id = roller->sel_opt_id + r; new_id = LV_CLAMP(0, new_id, (int32_t)roller->option_cnt - 1);