mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
Only drag in one dimension because its too jumpy
This commit is contained in:
parent
849d3d3255
commit
c36f731316
@ -410,21 +410,14 @@ static lv_res_t lv_rotary_signal(lv_obj_t * rotary, lv_signal_t sign, void * par
|
|||||||
lv_indev_get_point(param, &p);
|
lv_indev_get_point(param, &p);
|
||||||
lv_coord_t drag_diff;
|
lv_coord_t drag_diff;
|
||||||
lv_coord_t drag_x_diff = p.x -ext->last_press_point.x;
|
lv_coord_t drag_x_diff = p.x -ext->last_press_point.x;
|
||||||
lv_coord_t drag_y_diff = p.y -ext->last_press_point.y;
|
|
||||||
|
|
||||||
if (LV_MATH_ABS(drag_x_diff) > ext->threshold) {
|
if (LV_MATH_ABS(drag_x_diff) > ext->threshold) {
|
||||||
if (drag_x_diff > 0) drag_x_diff = ext->threshold;
|
if (drag_x_diff > 0) drag_x_diff = ext->threshold;
|
||||||
else drag_x_diff = -ext->threshold;
|
else drag_x_diff = -ext->threshold;
|
||||||
}
|
}
|
||||||
if (LV_MATH_ABS(drag_y_diff) > ext->threshold) {
|
drag_diff = drag_x_diff;
|
||||||
if (drag_y_diff > 0) drag_x_diff = ext->threshold;
|
|
||||||
else drag_y_diff = -ext->threshold;
|
|
||||||
}
|
|
||||||
ext->last_press_point = p;
|
ext->last_press_point = p;
|
||||||
|
|
||||||
if (LV_MATH_ABS(drag_x_diff) > LV_MATH_ABS(drag_y_diff)) drag_diff = drag_x_diff;
|
|
||||||
else drag_diff = drag_y_diff;
|
|
||||||
|
|
||||||
if (ext->knob_area.y1 < p.y && p.y < ext->knob_area.y2) {
|
if (ext->knob_area.y1 < p.y && p.y < ext->knob_area.y2) {
|
||||||
if (drag_diff > 0 && p.x < ext->knob_area.x2) {
|
if (drag_diff > 0 && p.x < ext->knob_area.x2) {
|
||||||
if (lv_rotary_set_value(rotary, lv_rotary_get_value(rotary) + drag_diff * ext->sensitivity, LV_ANIM_ON)) {
|
if (lv_rotary_set_value(rotary, lv_rotary_get_value(rotary) + drag_diff * ext->sensitivity, LV_ANIM_ON)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user