From 88f6d507e2bed717b7e9659b5ac0c75d04d97f8d Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Thu, 6 Jul 2023 18:38:32 +0900 Subject: [PATCH] e_comp_object: fix the comp object is shown even if ec is iconic There is a bug that the comp object is shown when client is set by iconic during showing animation. 1. client A is showing and begin animating of comp object 2. cw->animating is increased 3. e_client_iconify and _e_comp_intercept_hide is called 4. defer_hide is set 5. _e_comp_object_done_defer is called with "e,action,show,done" 6. the comp object is never hidden for fixing this bug, call evas_object_hide when _e_comp_object_done_defer is called with "e,action,show,done" and defer_hide is set. Change-Id: I7fdee04e208288ef06b4aaacb445a41ffd6e4d79 --- src/bin/e_comp_object.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 49f7d44..9df5c92 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -1276,8 +1276,14 @@ _e_comp_object_done_defer(void *data, Evas_Object *obj EINA_UNUSED, const char * if (!_e_comp_object_animating_end(cw)) return; if (cw->animating) return; /* hide only after animation finishes to guarantee a full run of the animation */ - if (cw->defer_hide && ((!strcmp(emission, "e,action,hide,done")) || (!strcmp(emission, "e,action,done")))) - evas_object_hide(cw->smart_obj); + if (!cw->defer_hide) return; + if ((!strcmp(emission, "e,action,hide,done")) || + (!strcmp(emission, "e,action,done")) || + ((cw->ec->iconic) && (!strcmp(emission, "e,action,show,done")))) + { + ELOGF("COMP", "defer hide emission:%s", cw->ec, emission); + evas_object_hide(cw->smart_obj); + } } /* run a visibility compositor effect if available, return false if object is dead */ -- 2.7.4