From c6a2e15ec23c8e96f71bafa8e43ef67fc4a73d0a Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 12 Jun 2021 08:02:19 +0200 Subject: [PATCH] feat(obj) add lv_obj_del_delayed() --- docs/overview/object.md | 2 ++ src/core/lv_obj_tree.c | 12 ++++++++++++ src/core/lv_obj_tree.h | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/docs/overview/object.md b/docs/overview/object.md index f7c9236920..97d355c7c9 100644 --- a/docs/overview/object.md +++ b/docs/overview/object.md @@ -121,6 +121,8 @@ This is useful e.g. if you want to delete the parent of an object in the child's You can remove all the children of an object (but not the object itself) using `lv_obj_clean(obj)`. +You can use `lv_obj_del_delayed(obj, 1000)` to delete an object after some time. The delay is expressed in millliseconds. + ## Screens diff --git a/src/core/lv_obj_tree.c b/src/core/lv_obj_tree.c index 0fd5854713..ab9bfe3ae0 100644 --- a/src/core/lv_obj_tree.c +++ b/src/core/lv_obj_tree.c @@ -106,6 +106,18 @@ void lv_obj_clean(lv_obj_t * obj) LV_LOG_TRACE("finished (delete %p)", obj) } +void lv_obj_del_delayed(lv_obj_t * obj, uint32_t delay_ms) +{ + lv_anim_t a; + lv_anim_init(&a); + lv_anim_set_var(&a, obj); + lv_anim_set_exec_cb(&a, NULL); + lv_anim_set_time(&a, 1); + lv_anim_set_delay(&a, delay_ms); + lv_anim_set_ready_cb(&a, lv_obj_del_anim_ready_cb); + lv_anim_start(&a); +} + void lv_obj_del_anim_ready_cb(lv_anim_t * a) { lv_obj_del(a->var); diff --git a/src/core/lv_obj_tree.h b/src/core/lv_obj_tree.h index 7cb241eaf6..8071f31ab5 100644 --- a/src/core/lv_obj_tree.h +++ b/src/core/lv_obj_tree.h @@ -56,6 +56,13 @@ void lv_obj_del(struct _lv_obj_t * obj); */ void lv_obj_clean(struct _lv_obj_t * obj); +/** + * Delete an object after some delay + * @param obj pointer to an object + * @param delay_ms time to wait before delete in milliseconds + */ +void lv_obj_del_delayed(struct _lv_obj_t * obj, uint32_t delay_ms); + /** * A function to be easily used in animation ready callback to delete an object when the animation is ready * @param a pointer to the animation