Skip to content

Commit

Permalink
fix(scroll) minor fixes on obj scroll handling
Browse files Browse the repository at this point in the history
  • Loading branch information
kisvegabor committed Sep 29, 2021
1 parent fc4fdb1 commit a4128a8
Showing 1 changed file with 22 additions and 5 deletions.
27 changes: 22 additions & 5 deletions src/core/lv_obj.c
Original file line number Diff line number Diff line change
@@ -226,6 +226,7 @@ void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f)
LV_ASSERT_OBJ(obj, MY_CLASS);

bool was_on_layout = lv_obj_is_layout_positioned(obj);
bool scrollable_chg = (f & LV_OBJ_FLAG_SCROLLABLE) != (obj->flags & LV_OBJ_FLAG_SCROLLABLE);

if(f & LV_OBJ_FLAG_HIDDEN) lv_obj_invalidate(obj);

@@ -238,13 +239,21 @@ void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f)
if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLAG_LAYOUT_2))) {
lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj));
}

if(scrollable_chg) {
lv_area_t hor_area, ver_area;
lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area);
lv_obj_invalidate_area(obj, &hor_area);
lv_obj_invalidate_area(obj, &ver_area);
}
}

void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t f)
{
LV_ASSERT_OBJ(obj, MY_CLASS);

bool was_on_layout = lv_obj_is_layout_positioned(obj);
bool scrollable_chg = (f & LV_OBJ_FLAG_SCROLLABLE) != (obj->flags & LV_OBJ_FLAG_SCROLLABLE);

obj->flags &= (~f);

@@ -258,6 +267,13 @@ void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t f)
if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLAG_LAYOUT_2))) {
lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj));
}

if(scrollable_chg) {
lv_area_t hor_area, ver_area;
lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area);
lv_obj_invalidate_area(obj, &hor_area);
lv_obj_invalidate_area(obj, &ver_area);
}
}

void lv_obj_add_state(lv_obj_t * obj, lv_state_t state)
@@ -787,6 +803,12 @@ static void lv_obj_event(const lv_obj_class_t * class_p, lv_event_t * e)
}
else if(code == LV_EVENT_SCROLL_END) {
lv_obj_clear_state(obj, LV_STATE_SCROLLED);
if(lv_obj_get_scrollbar_mode(obj) == LV_SCROLLBAR_MODE_ACTIVE) {
lv_area_t hor_area, ver_area;
lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area);
lv_obj_invalidate_area(obj, &hor_area);
lv_obj_invalidate_area(obj, &ver_area);
}
}
else if(code == LV_EVENT_DEFOCUSED) {
lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED | LV_STATE_FOCUS_KEY);
@@ -814,11 +836,6 @@ static void lv_obj_event(const lv_obj_class_t * class_p, lv_event_t * e)
lv_obj_mark_layout_as_dirty(obj);
}
}
else if(code == LV_EVENT_SCROLL_END) {
if(lv_obj_get_scrollbar_mode(obj) == LV_SCROLLBAR_MODE_ACTIVE) {
lv_obj_invalidate(obj);
}
}
else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
lv_coord_t * s = lv_event_get_param(e);
lv_coord_t d = lv_obj_calculate_ext_draw_size(obj, LV_PART_MAIN);

0 comments on commit a4128a8

Please sign in to comment.