diff --git a/src/lv_widgets/lv_slider.c b/src/lv_widgets/lv_slider.c index bae71c0f4e..0c12bff665 100644 --- a/src/lv_widgets/lv_slider.c +++ b/src/lv_widgets/lv_slider.c @@ -81,7 +81,7 @@ lv_obj_t * lv_slider_create(lv_obj_t * par, const lv_obj_t * copy) /*Initialize the allocated 'ext' */ ext->value_to_set = NULL; ext->dragging = 0; - ext->right_knob_focus = 0; + ext->left_knob_focus = 0; lv_style_list_init(&ext->style_knob); /*The signal and design functions are not copied so set them here*/ @@ -328,6 +328,8 @@ static lv_res_t lv_slider_signal(lv_obj_t * slider, lv_signal_t sign, void * par } } else if(sign == LV_SIGNAL_PRESSING && ext->value_to_set != NULL) { + if(lv_indev_get_type(param) != LV_INDEV_TYPE_POINTER) return res; + lv_indev_get_point(param, &p); lv_bidi_dir_t base_dir = lv_obj_get_base_dir(slider); @@ -393,9 +395,9 @@ static lv_res_t lv_slider_signal(lv_obj_t * slider, lv_signal_t sign, void * par if(indev_type == LV_INDEV_TYPE_ENCODER) { if(editing) { if(lv_slider_get_type(slider) == LV_SLIDER_TYPE_RANGE) { - if(ext->right_knob_focus == 0) ext->right_knob_focus = 1; + if(ext->left_knob_focus == 0) ext->left_knob_focus = 1; else { - ext->right_knob_focus = 0; + ext->left_knob_focus = 0; lv_group_set_editing(g, false); } } else { @@ -407,7 +409,7 @@ static lv_res_t lv_slider_signal(lv_obj_t * slider, lv_signal_t sign, void * par } else if(sign == LV_SIGNAL_FOCUS) { - ext->right_knob_focus = 0; + ext->left_knob_focus = 0; } else if(sign == LV_SIGNAL_COORD_CHG) { /* The knob size depends on slider size. @@ -439,14 +441,14 @@ static lv_res_t lv_slider_signal(lv_obj_t * slider, lv_signal_t sign, void * par char c = *((char *)param); if(c == LV_KEY_RIGHT || c == LV_KEY_UP) { - if(ext->right_knob_focus) lv_slider_set_value(slider, lv_slider_get_value(slider) + 1, LV_ANIM_ON); + if(!ext->left_knob_focus) lv_slider_set_value(slider, lv_slider_get_value(slider) + 1, LV_ANIM_ON); else lv_slider_set_left_value(slider, lv_slider_get_left_value(slider) + 1, LV_ANIM_ON); res = lv_event_send(slider, LV_EVENT_VALUE_CHANGED, NULL); if(res != LV_RES_OK) return res; } else if(c == LV_KEY_LEFT || c == LV_KEY_DOWN) { - if(ext->right_knob_focus) lv_slider_set_value(slider, lv_slider_get_value(slider) - 1, LV_ANIM_ON); + if(!ext->left_knob_focus) lv_slider_set_value(slider, lv_slider_get_value(slider) - 1, LV_ANIM_ON); else lv_slider_set_left_value(slider, lv_slider_get_left_value(slider) - 1, LV_ANIM_ON); res = lv_event_send(slider, LV_EVENT_VALUE_CHANGED, NULL); diff --git a/src/lv_widgets/lv_slider.h b/src/lv_widgets/lv_slider.h index 44827409d1..0a04a731d1 100644 --- a/src/lv_widgets/lv_slider.h +++ b/src/lv_widgets/lv_slider.h @@ -49,7 +49,7 @@ typedef struct { lv_area_t right_knob_area; int16_t * value_to_set; /* Which bar value to set */ uint8_t dragging : 1; /*1: the slider is being dragged*/ - uint8_t right_knob_focus :1; /*1: with encoder now the right knob can be adjusted*/ + uint8_t left_knob_focus :1; /*1: with encoder now the right knob can be adjusted*/ } lv_slider_ext_t; /** Built-in styles of slider*/