keyboard: fix processing wrong angle 08/99208/1
authorMinJeong Kim <minjjj.kim@samsung.com>
Tue, 22 Nov 2016 06:51:20 +0000 (15:51 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Tue, 22 Nov 2016 06:51:20 +0000 (15:51 +0900)
Change-Id: I51ba13eb67602dcfcfdcf6913a5f1c5189aa3e72
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
src/e_mod_effect.c

index 3aece03..7356b7d 100644 (file)
@@ -128,6 +128,18 @@ _eff_group_get(E_Client *ec)
    return group;
 }
 
+static int
+_eff_group_angle_get(E_Client *ec, E_Effect_Group group)
+{
+   if (group == E_EFFECT_GROUP_KEYBOARD)
+     {
+        if (ec->parent)
+          return ec->parent->e.state.rot.ang.curr;
+     }
+
+   return ec->e.state.rot.ang.curr;
+}
+
 static Eina_Bool
 _eff_ref(E_Client *ec)
 {
@@ -436,7 +448,7 @@ _eff_cb_visible(void *data, Evas_Object *obj, const char *signal)
    ec->extra_animating = EINA_TRUE;
 
    _eff_object_setup(ec, group);
-   ang = ec->e.state.rot.ang.curr;
+   ang = _eff_group_angle_get(ec, group);
    e_comp_object_effect_params_set(ec->frame, 0, (int[]){0, ang}, 2);
    if (e_comp->nocomp)
      {
@@ -491,10 +503,17 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal)
    if (!ec) return EINA_FALSE;
    if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE;
 
+   /* check for effect group */
    group = _eff_group_get(ec);
    if ((group != E_EFFECT_GROUP_NORMAL) &&
        (group != E_EFFECT_GROUP_KEYBOARD)) return EINA_FALSE;
 
+   if (group == E_EFFECT_GROUP_KEYBOARD)
+     {
+        if (ec->visibility.obscured == E_VISIBILITY_FULLY_OBSCURED)
+          return EINA_FALSE;
+     }
+
    if (!evas_object_visible_get(obj)) return EINA_FALSE;
    if (!_eff_ref(ec)) return EINA_FALSE;
 
@@ -512,7 +531,7 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal)
      _eff_object_layer_up(ec);
 
    _eff_object_setup(ec, group);
-   ang = ec->e.state.rot.ang.curr;
+   ang = _eff_group_angle_get(ec, group);
    e_comp_object_effect_params_set(ec->frame, 0, (int[]){1, ang}, 2);
 
    if (e_comp->nocomp)
@@ -620,7 +639,7 @@ _eff_cb_uniconify(void *data, Evas_Object *obj, const char *signal)
         e_comp_override_add();
 
         _eff_object_setup(ec, group);
-        ang = ec->e.state.rot.ang.curr;
+        ang = _eff_group_angle_get(ec, group);
         e_comp_object_effect_params_set(ec->frame, 0, (int[]){0, ang}, 2);
 
         if (e_comp->nocomp)
@@ -694,7 +713,7 @@ _eff_cb_iconify(void *data, Evas_Object *obj, const char *signal)
    e_comp_override_add();
 
    _eff_object_setup(ec, group);
-   ang = ec->e.state.rot.ang.curr;
+   ang = _eff_group_angle_get(ec, group);
    e_comp_object_effect_params_set(ec->frame, 0, (int[]){1, ang}, 2);
 
    if (e_comp->nocomp)
@@ -826,6 +845,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal)
         ec_home = ec;
         ec = below;
         group = _eff_group_get(ec);
+        if (group != E_EFFECT_GROUP_NORMAL) return EINA_FALSE;
 
         if (emission) eina_stringshare_del(emission);
         emission = eina_stringshare_add("e,action,restack,hide");
@@ -846,7 +866,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal)
         _eff_object_layer_up(ec);
 
         _eff_object_setup(ec, group);
-        ang = ec->e.state.rot.ang.curr;
+        ang = _eff_group_angle_get(ec, group);
         e_comp_object_effect_params_set(ec->frame, 0, (int[]){2, ang}, 2);
 
         if (e_comp->nocomp)
@@ -889,7 +909,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal)
         _eff_object_layer_up(ec);
 
         _eff_object_setup(ec, group);
-        ang = ec->e.state.rot.ang.curr;
+        ang = _eff_group_angle_get(ec, group);
         e_comp_object_effect_params_set(ec->frame, 0, (int[]){3, ang}, 2);
 
         if (e_comp->nocomp)
@@ -911,7 +931,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal)
         e_comp_override_add();
 
         _eff_object_setup(ec, group);
-        ang = ec->e.state.rot.ang.curr;
+        ang = _eff_group_angle_get(ec, group);
         e_comp_object_effect_params_set(ec->frame, 0, (int[]){4, ang}, 2);
 
         if (e_comp->nocomp)
@@ -1158,7 +1178,7 @@ e_mod_effect_init(void)
    else
      {
         eff->file = "";
-        eff->style = "no-eff";
+        eff->style = "no-effect";
      }
 
    eff->clients = eina_hash_pointer_new(_eff_cb_client_data_free);