added code to support sending launching done event 05/80105/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Thu, 14 Jul 2016 14:16:24 +0000 (23:16 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Thu, 14 Jul 2016 14:16:24 +0000 (23:16 +0900)
Change-Id: Ied8b6d49f7351fe15798452aae1aa7d4a022857f

src/bin/e_client.c
src/bin/e_client.h
src/bin/e_comp_object.c

index 95899571911b981a25acf5bded4a88d7583e65f7..e856210902d600ed55e4ddad1946a7bb0a15ccec 100644 (file)
@@ -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;
index 741abf8e9dc4c4284c25e3b71f19654b7b5e9fbf..99f92f1963838f2327d46793e5a3f53057d58035 100644 (file)
@@ -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) \
index b7efb1147391c16d3d0bea535d3eef2d12f4b82d..c6ff23779c746a4f35f9e0753ce2217675a8e349 100644 (file)
@@ -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))