mirror of
https://github.com/lvgl/lvgl.git
synced 2025-02-04 07:13:00 +08:00
fix(layout): fix layout update trigger in lv_obj_add/clear_flag()
This commit is contained in:
parent
a8dd20435d
commit
d4eb6a2ad3
@ -325,17 +325,18 @@ void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f)
|
|||||||
{
|
{
|
||||||
LV_ASSERT_OBJ(obj, MY_CLASS);
|
LV_ASSERT_OBJ(obj, MY_CLASS);
|
||||||
|
|
||||||
|
bool was_on_layout = lv_obj_is_layout_positioned(obj);
|
||||||
|
|
||||||
if(f & LV_OBJ_FLAG_HIDDEN) lv_obj_invalidate(obj);
|
if(f & LV_OBJ_FLAG_HIDDEN) lv_obj_invalidate(obj);
|
||||||
|
|
||||||
obj->flags |= f;
|
obj->flags |= f;
|
||||||
|
|
||||||
if(f & (LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_FLOATING)) lv_signal_send(lv_obj_get_parent(obj), LV_SIGNAL_CHILD_CHG, obj);
|
if(f & LV_OBJ_FLAG_HIDDEN) {
|
||||||
|
|
||||||
if(f & (LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLAG_LAYOUT_2)) {
|
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
if(lv_obj_is_layout_positioned(obj)) {
|
}
|
||||||
lv_obj_update_layout(lv_obj_get_parent(obj), obj);
|
|
||||||
}
|
if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLAG_LAYOUT_2))) {
|
||||||
|
lv_obj_update_layout(lv_obj_get_parent(obj), obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,6 +344,8 @@ void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t f)
|
|||||||
{
|
{
|
||||||
LV_ASSERT_OBJ(obj, MY_CLASS);
|
LV_ASSERT_OBJ(obj, MY_CLASS);
|
||||||
|
|
||||||
|
bool was_on_layout = lv_obj_is_layout_positioned(obj);
|
||||||
|
|
||||||
obj->flags &= (~f);
|
obj->flags &= (~f);
|
||||||
|
|
||||||
if(f & LV_OBJ_FLAG_HIDDEN) {
|
if(f & LV_OBJ_FLAG_HIDDEN) {
|
||||||
@ -351,7 +354,10 @@ void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t f)
|
|||||||
lv_obj_update_layout(lv_obj_get_parent(obj), obj);
|
lv_obj_update_layout(lv_obj_get_parent(obj), obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(f & (LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_FLOATING)) lv_signal_send(lv_obj_get_parent(obj), LV_SIGNAL_CHILD_CHG, obj);
|
|
||||||
|
if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLAG_LAYOUT_2))) {
|
||||||
|
lv_obj_update_layout(lv_obj_get_parent(obj), obj);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void lv_obj_add_state(lv_obj_t * obj, lv_state_t state)
|
void lv_obj_add_state(lv_obj_t * obj, lv_state_t state)
|
||||||
|
@ -153,7 +153,7 @@ void lv_obj_set_layout(lv_obj_t * obj, const void * layout)
|
|||||||
|
|
||||||
bool lv_obj_is_layout_positioned(const lv_obj_t * obj)
|
bool lv_obj_is_layout_positioned(const lv_obj_t * obj)
|
||||||
{
|
{
|
||||||
if(lv_obj_has_flag_any(obj, LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_FLOATING)) return false;
|
if(lv_obj_has_flag_any(obj, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_FLOATING)) return false;
|
||||||
|
|
||||||
lv_obj_t * parent = lv_obj_get_parent(obj);
|
lv_obj_t * parent = lv_obj_get_parent(obj);
|
||||||
if(parent == NULL) return false;
|
if(parent == NULL) return false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user