diff --git a/docs/widgets/obj.md b/docs/widgets/obj.md index 94fe0a83b..8b6f71a14 100644 --- a/docs/widgets/obj.md +++ b/docs/widgets/obj.md @@ -114,6 +114,7 @@ There are some attributes which can be enabled/disabled by `lv_obj_add/clear_fla - `LV_OBJ_FLAG_SCROLL_ONE` Allow scrolling only one snappable children - `LV_OBJ_FLAG_SCROLL_CHAIN` Allow propagating the scroll to a parent - `LV_OBJ_FLAG_SCROLL_ON_FOCUS` Automatically scroll object to make it visible when focused +- `LV_OBJ_FLAG_SCROLL_WITH_ARROW` Allow scrolling the focused object with arrow keys - `LV_OBJ_FLAG_SNAPPABLE` If scroll snap is enabled on the parent it can snap to this object - `LV_OBJ_FLAG_PRESS_LOCK` Keep the object pressed even if the press slid from the object - `LV_OBJ_FLAG_EVENT_BUBBLE` Propagate the events to the parent too diff --git a/src/core/lv_obj.c b/src/core/lv_obj.c index d1c7688e3..a75f7c107 100644 --- a/src/core/lv_obj.c +++ b/src/core/lv_obj.c @@ -427,6 +427,7 @@ static void lv_obj_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) obj->flags |= LV_OBJ_FLAG_SCROLLABLE; obj->flags |= LV_OBJ_FLAG_SCROLL_ELASTIC; obj->flags |= LV_OBJ_FLAG_SCROLL_MOMENTUM; + obj->flags |= LV_OBJ_FLAG_SCROLL_WITH_ARROW; if(parent) obj->flags |= LV_OBJ_FLAG_GESTURE_BUBBLE; LV_TRACE_OBJ_CREATE("finished"); @@ -745,8 +746,7 @@ static void lv_obj_event(const lv_obj_class_t * class_p, lv_event_t * e) if(res != LV_RES_OK) return; } } - else if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLLABLE) && !lv_obj_is_editable(obj)) { - return; + else if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_WITH_ARROW) && !lv_obj_is_editable(obj)) { /*scroll by keypad or encoder*/ lv_anim_enable_t anim_enable = LV_ANIM_OFF; lv_coord_t sl = lv_obj_get_scroll_left(obj); diff --git a/src/core/lv_obj.h b/src/core/lv_obj.h index 0fcbd8b74..4469fcc23 100644 --- a/src/core/lv_obj.h +++ b/src/core/lv_obj.h @@ -97,13 +97,14 @@ enum { LV_OBJ_FLAG_SCROLL_ONE = (1L << 7), /**< Allow scrolling only one snappable children*/ LV_OBJ_FLAG_SCROLL_CHAIN = (1L << 8), /**< Allow propagating the scroll to a parent*/ LV_OBJ_FLAG_SCROLL_ON_FOCUS = (1L << 9), /**< Automatically scroll object to make it visible when focused*/ - LV_OBJ_FLAG_SNAPPABLE = (1L << 10), /**< If scroll snap is enabled on the parent it can snap to this object*/ - LV_OBJ_FLAG_PRESS_LOCK = (1L << 11), /**< Keep the object pressed even if the press slid from the object*/ - LV_OBJ_FLAG_EVENT_BUBBLE = (1L << 12), /**< Propagate the events to the parent too*/ - LV_OBJ_FLAG_GESTURE_BUBBLE = (1L << 13), /**< Propagate the gestures to the parent*/ - LV_OBJ_FLAG_ADV_HITTEST = (1L << 14), /**< Allow performing more accurate hit (click) test. E.g. consider rounded corners.*/ - LV_OBJ_FLAG_IGNORE_LAYOUT = (1L << 15), /**< Make the object position-able by the layouts*/ - LV_OBJ_FLAG_FLOATING = (1L << 16), /**< Do not scroll the object when the parent scrolls and ignore layout*/ + LV_OBJ_FLAG_SCROLL_WITH_ARROW = (1L << 10), /**< Allow scrolling the focused object with arrow keys*/ + LV_OBJ_FLAG_SNAPPABLE = (1L << 11), /**< If scroll snap is enabled on the parent it can snap to this object*/ + LV_OBJ_FLAG_PRESS_LOCK = (1L << 12), /**< Keep the object pressed even if the press slid from the object*/ + LV_OBJ_FLAG_EVENT_BUBBLE = (1L << 13), /**< Propagate the events to the parent too*/ + LV_OBJ_FLAG_GESTURE_BUBBLE = (1L << 14), /**< Propagate the gestures to the parent*/ + LV_OBJ_FLAG_ADV_HITTEST = (1L << 15), /**< Allow performing more accurate hit (click) test. E.g. consider rounded corners.*/ + LV_OBJ_FLAG_IGNORE_LAYOUT = (1L << 16), /**< Make the object position-able by the layouts*/ + LV_OBJ_FLAG_FLOATING = (1L << 17), /**< Do not scroll the object when the parent scrolls and ignore layout*/ LV_OBJ_FLAG_LAYOUT_1 = (1L << 23), /**< Custom flag, free to use by layouts*/ LV_OBJ_FLAG_LAYOUT_2 = (1L << 24), /**< Custom flag, free to use by layouts*/