From 428db9494dc43d65026a9c1fb42c50daede82fc2 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Thu, 17 Jun 2021 11:32:49 +0200 Subject: [PATCH] fix(coords) fix using large coordinates Fixes #2323 --- src/core/lv_obj.c | 1 - src/core/lv_obj_scroll.c | 4 +++- src/misc/lv_area.h | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/lv_obj.c b/src/core/lv_obj.c index a68377e0a..ae8d08866 100644 --- a/src/core/lv_obj.c +++ b/src/core/lv_obj.c @@ -774,7 +774,6 @@ static void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state) static bool obj_valid_child(const lv_obj_t * parent, const lv_obj_t * obj_to_find) { - /*Check all children of `parent`*/ uint32_t child_cnt = 0; if(parent->spec_attr) child_cnt = parent->spec_attr->child_cnt; diff --git a/src/core/lv_obj_scroll.c b/src/core/lv_obj_scroll.c index b0e5220ba..e9a01a3ee 100644 --- a/src/core/lv_obj_scroll.c +++ b/src/core/lv_obj_scroll.c @@ -222,7 +222,9 @@ lv_coord_t lv_obj_get_scroll_right(lv_obj_t * obj) lv_coord_t pad_left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN); lv_coord_t border_width = lv_obj_get_style_border_width(obj, LV_PART_MAIN); - child_res -= (obj->coords.x2 - pad_right - border_width); + if(child_res != LV_COORD_MIN) { + child_res -= (obj->coords.x2 - pad_right - border_width); + } lv_coord_t self_w; self_w = lv_obj_get_self_width(obj); diff --git a/src/misc/lv_area.h b/src/misc/lv_area.h index 5ddf36dee..9bf3e6ec2 100644 --- a/src/misc/lv_area.h +++ b/src/misc/lv_area.h @@ -233,7 +233,12 @@ void lv_area_align(const lv_area_t * base, lv_area_t * to_align, lv_align_t alig * MACROS **********************/ +#if LV_USE_LARGE_COORD +#define _LV_COORD_TYPE_SHIFT (29) +#else #define _LV_COORD_TYPE_SHIFT (13) +#endif + #define _LV_COORD_TYPE_MASK (3 << _LV_COORD_TYPE_SHIFT) #define _LV_COORD_PLAIN(x) ((x) & (~_LV_COORD_TYPE_MASK)) /*Remove type specifiers*/