From e76622eccbff352f465c046b8083a7727612d57a Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Thu, 14 Jul 2016 23:16:24 +0900 Subject: [PATCH] added code to support sending launching done event Change-Id: Ied8b6d49f7351fe15798452aae1aa7d4a022857f --- src/bin/e_client.c | 3 +++ src/bin/e_client.h | 3 +++ src/bin/e_comp_object.c | 27 ++++++++++++++++++++++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 9589957191..e856210902 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -4373,6 +4373,9 @@ e_client_activate(E_Client *ec, Eina_Bool just_do_it) (e_config->focus_setting == E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED)))) || (just_do_it)) { + ELOG("Set launching flag..", ec->pixmap, ec); + ec->launching = EINA_TRUE; + ELOG("Un-Set ICONIFY BY CLIENT", ec->pixmap, ec); ec->exp_iconify.by_client = 0; ec->exp_iconify.not_raise = 0; diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 741abf8e9d..99f92f1963 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -851,6 +851,9 @@ struct E_Client Ecore_Timer *map_timer; Eina_Bool pointer_enter_sent; + + Eina_Bool launching : 1; + Eina_Bool extra_animating : 1; }; #define e_client_focus_policy_click(ec) \ diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index b7efb11473..c6ff23779c 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -783,6 +783,17 @@ _e_comp_object_animating_end(E_Comp_Object *cw) cw->animating--; if (!cw->animating) { + if (cw->ec) + { + if (cw->ec->launching) + { + if (!cw->ec->extra_animating) + { + cw->ec->launching = EINA_FALSE; + e_comp_object_signal_emit(cw->ec->frame, "e,action,launch,done", "e"); + } + } + } e_comp->animating--; cw->showing = 0; UNREFD(cw->ec, 2); @@ -1588,6 +1599,12 @@ _e_comp_intercept_hide(void *data, Evas_Object *obj) if( !_e_comp_object_intercept_hook_call(E_COMP_OBJECT_INTERCEPT_HOOK_HIDE, cw->ec)) return; #endif + if (cw->ec->launching == EINA_TRUE) + { + ELOG("Hide. Cancel launching flag", cw->ec->pixmap, cw->ec); + cw->ec->launching = EINA_FALSE; + } + if (cw->ec->hidden) { /* hidden flag = just do it */ @@ -2286,10 +2303,18 @@ _e_comp_smart_show(Evas_Object *obj) return; } if (cw->ec->iconic && (!cw->ec->new_client)) - e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e"); + { + ELOG("Set launching flag..", cw->ec->pixmap, cw->ec); + cw->ec->launching = EINA_TRUE; + + e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e"); + } else if (!cw->showing) /* if set, client was ec->hidden during show animation */ { cw->showing = 1; + ELOG("Set launching flag..", cw->ec->pixmap, cw->ec); + cw->ec->launching = EINA_TRUE; + e_comp_object_signal_emit(cw->smart_obj, "e,state,visible", "e"); _e_comp_object_animating_begin(cw); if (!_e_comp_object_effect_visibility_start(cw, 1)) -- 2.34.1