diff --git a/lv_objx/lv_mbox.c b/lv_objx/lv_mbox.c index 54bf7c2d2..af53ddd4d 100644 --- a/lv_objx/lv_mbox.c +++ b/lv_objx/lv_mbox.c @@ -38,6 +38,7 @@ static lv_res_t lv_mbox_signal(lv_obj_t * mbox, lv_signal_t sign, void * param); static void mbox_realign(lv_obj_t * mbox); static lv_res_t lv_mbox_close_action(lv_obj_t * btn, const char * txt); +static void lv_mbox_close_end_cb(lv_obj_t * mbox); /********************** * STATIC VARIABLES @@ -216,12 +217,12 @@ void lv_mbox_start_auto_close(lv_obj_t * mbox, uint16_t delay) if(ext->anim_time != 0) { /*Add shrinking animations*/ lv_obj_animate(mbox, LV_ANIM_GROW_H | LV_ANIM_OUT, ext->anim_time, delay, NULL); - lv_obj_animate(mbox, LV_ANIM_GROW_V | LV_ANIM_OUT, ext->anim_time, delay, (void (*)(lv_obj_t *))lv_obj_del); + lv_obj_animate(mbox, LV_ANIM_GROW_V | LV_ANIM_OUT, ext->anim_time, delay, lv_mbox_close_end_cb); /*Disable fit to let shrinking work*/ lv_cont_set_fit(mbox, false, false); } else { - lv_obj_animate(mbox, LV_ANIM_NONE, ext->anim_time, delay, (void (*)(lv_obj_t *))lv_obj_del); + lv_obj_animate(mbox, LV_ANIM_NONE, ext->anim_time, delay, lv_mbox_close_end_cb); } #else (void)delay; /*Unused*/ @@ -496,4 +497,8 @@ static lv_res_t lv_mbox_close_action(lv_obj_t * btn, const char * txt) return LV_RES_OK; } +static void lv_mbox_close_end_cb(lv_obj_t * mbox) +{ + lv_obj_del(mbox); +} #endif