fix(layout) fix missing layout recalculation on screen
This commit is contained in:
@@ -36,6 +36,8 @@ void lv_example_checkbox_1(void)
|
|||||||
lv_obj_add_state(cb, LV_STATE_CHECKED | LV_STATE_DISABLED);
|
lv_obj_add_state(cb, LV_STATE_CHECKED | LV_STATE_DISABLED);
|
||||||
lv_checkbox_set_text(cb, "Melon");
|
lv_checkbox_set_text(cb, "Melon");
|
||||||
lv_obj_add_event_cb(cb, event_handler, LV_EVENT_ALL, NULL);
|
lv_obj_add_event_cb(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||||
|
|
||||||
|
lv_obj_update_layout(cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -247,6 +247,7 @@ typedef struct _lv_obj_t {
|
|||||||
lv_obj_flag_t flags;
|
lv_obj_flag_t flags;
|
||||||
lv_state_t state;
|
lv_state_t state;
|
||||||
uint16_t layout_inv :1;
|
uint16_t layout_inv :1;
|
||||||
|
uint16_t scr_layout_inv :1;
|
||||||
uint16_t skip_trans :1;
|
uint16_t skip_trans :1;
|
||||||
uint16_t style_cnt :6;
|
uint16_t style_cnt :6;
|
||||||
uint16_t h_layout :1;
|
uint16_t h_layout :1;
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ void lv_obj_mark_layout_as_dirty(lv_obj_t * obj)
|
|||||||
|
|
||||||
/*Mark the screen as dirty too to mark that there is an something to do on this screen*/
|
/*Mark the screen as dirty too to mark that there is an something to do on this screen*/
|
||||||
lv_obj_t * scr = lv_obj_get_screen(obj);
|
lv_obj_t * scr = lv_obj_get_screen(obj);
|
||||||
scr->layout_inv = 1;
|
scr->scr_layout_inv = 1;
|
||||||
|
|
||||||
/*Make the display refreshing*/
|
/*Make the display refreshing*/
|
||||||
lv_disp_t * disp = lv_obj_get_disp(scr);
|
lv_disp_t * disp = lv_obj_get_disp(scr);
|
||||||
@@ -296,11 +296,11 @@ void lv_obj_update_layout(const lv_obj_t * obj)
|
|||||||
lv_obj_t * scr = lv_obj_get_screen(obj);
|
lv_obj_t * scr = lv_obj_get_screen(obj);
|
||||||
|
|
||||||
/*Repeat until there where layout invalidations*/
|
/*Repeat until there where layout invalidations*/
|
||||||
while(scr->layout_inv) {
|
while(scr->scr_layout_inv) {
|
||||||
LV_LOG_INFO("Start layout update")
|
LV_LOG_INFO("Layout update begin")
|
||||||
scr->layout_inv = 0;
|
scr->scr_layout_inv = 0;
|
||||||
layout_update_core(scr);
|
layout_update_core(scr);
|
||||||
LV_LOG_TRACE("Layout update finished")
|
LV_LOG_TRACE("Layout update end")
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex = false;
|
mutex = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user