Merged with devel 68/9768/2
authorGwanglim Lee <gl77.lee@samsung.com>
Mon, 1 Jul 2013 16:50:23 +0000 (01:50 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Mon, 1 Jul 2013 16:50:23 +0000 (01:50 +0900)
Change-Id: I4d1a60d88947e6d9292d85ed3f0bbbda869a60f5

19 files changed:
comp-tizen/src/e_mod_comp_effect.c
comp-tizen/src/e_mod_comp_effect_win_rotation.c
comp-tizen/src/e_mod_comp_policy.c
comp-tizen/src/e_mod_comp_policy.h
comp-tizen/src/e_mod_comp_win_type.c
comp-tizen/src/e_mod_comp_win_type.h
illume2-tizen/src/e-module-illume2-tizen.edc
illume2-tizen/src/e_mod_floating_window.c
illume2-tizen/src/images/RB0_resize_notAvail.png [deleted file]
illume2-tizen/src/images/mw_frame_press.png [moved from illume2-tizen/src/images/RB0_resize.png with 100% similarity]
illume2-tizen/src/images/mw_frame_press_overscroll.png [new file with mode: 0755]
illume2-tizen/src/policies/illume/policy.c
move-tizen/src/e_mod_move_border_type.c
move-tizen/src/e_mod_move_border_type.h
move-tizen/src/e_mod_move_indicator_widget.c
move-tizen/src/e_mod_move_mini_apptray.c
move-tizen/src/e_mod_move_mini_apptray_widget.c
move-tizen/src/e_mod_move_quickpanel.c
screen-reader/src/e_mod_main.c

index 1f1f124..38dad4f 100644 (file)
@@ -937,17 +937,31 @@ _effect_show(E_Comp_Win *cw)
                   _effect_above_wins_set(cw, EINA_TRUE);
                }
           }
-        /* don't need to check visibility for home window by home key */
+        /* in most cases, border show events of home window are generated
+         * by pressing the h/w home button. at that moment, home window
+         * is invisible thus the wm doesn't need to check visibility for
+         * home window. just make app closing effect except lock and
+         * setup wizard window.
+         */
         else if (TYPE_HOME_CHECK(cw))
           {
-             /* app window hide effect by pressing the home key */
+             /* app window hide effect by pressing the h/w home button */
              cw2 = e_mod_comp_util_win_normal_get(NULL);
              if (cw2)
                {
+                  /* do nothing, if cw2 is such exceptional windows as lock
+                   * and setup wizard window. this case usually happens when
+                   * system is booting. (first show of the home window)
+                   */
+                  res = e_mod_comp_policy_home_app_win_check(cw2);
+
                   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
-                       "%15.15s|>BG HOME 0x%08x FG 0x%08x", "EFFECT",
+                       "%15.15s|>BG HOME 0x%08x FG 0x%08x SKIP:%d", "EFFECT",
                        e_mod_comp_util_client_xid_get(cw),
-                       e_mod_comp_util_client_xid_get(cw2));
+                       e_mod_comp_util_client_xid_get(cw2),
+                       !(res));
+
+                  E_CHECK(res);
 
                   /* background is home */
                   _MAKE_EMISSION("e,state,visible,on,noeffect");
index ef32686..43277bf 100644 (file)
@@ -109,7 +109,7 @@ e_mod_comp_effect_zone_rotation_begin(E_Comp_Effect_Zone_Rotation *zr)
     */
    E_Border *bd = e_border_focused_get();
    E_Border *_bd = NULL;
-   E_Comp_Win *cw = NULL, *cw2 = NULL;
+   E_Comp_Win *cw = NULL, *cw2 = NULL, *cw3 = NULL;
    if (bd)
      {
         cw = e_mod_comp_win_find(bd->win);
@@ -119,10 +119,28 @@ e_mod_comp_effect_zone_rotation_begin(E_Comp_Effect_Zone_Rotation *zr)
              if (!REGION_EQUAL_TO_ZONE(cw, bd->zone))
                {
                   cw2 = e_mod_comp_util_win_normal_get(cw);
-                  if ((cw2) && (cw2->bd)) _bd = cw2->bd;
+                  if ((cw2) && (cw2->bd))
+                    {
+                       _bd = cw2->bd;
+                       cw3 = cw2;
+                    }
                }
              else
-               _bd = bd;
+               {
+                  _bd = bd;
+                  cw3 = cw;
+               }
+
+             if (cw3)
+               {
+                  if (TYPE_LOCKSCREEN_CHECK(cw3) ||
+                      TYPE_HOME_CHECK(cw3))
+                    {
+                       ELB(ELBT_COMP, "SKIP ROT_EFFECT",
+                           e_mod_comp_util_client_xid_get(cw3));
+                       return EINA_FALSE;
+                    }
+               }
 
              if (_bd)
                {
@@ -139,12 +157,6 @@ e_mod_comp_effect_zone_rotation_begin(E_Comp_Effect_Zone_Rotation *zr)
                             ELB(ELBT_COMP, "SKIP VIDEO PLAYER", _bd->client.win);
                             return EINA_FALSE;
                          }
-                       if ((!strcmp(_bd->client.icccm.name, "LOCK_SCREEN")) &&
-                           (!strcmp(_bd->client.icccm.class, "LOCK_SCREEN")))
-                         {
-                            ELB(ELBT_COMP, "SKIP LOCK_SCREEN", _bd->client.win);
-                            return EINA_FALSE;
-                         }
                     }
                }
           }
index 43a8b0d..2fb27e8 100644 (file)
@@ -4,7 +4,6 @@
 #include "e_mod_comp_policy.h"
 
 /* local subsystem functions */
-static E_Comp_Win *_transient_parent_find(E_Comp_Win *cw);
 
 /* local subsystem globals */
 static Eina_Hash *shadow_hash = NULL;
@@ -45,6 +44,7 @@ e_mod_comp_policy_init(void)
    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_BACKGROUND),     "no-effect"         );
    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_KEYBOARD),   "keyboard"          );
    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_SUB),        "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SETUP_WIZARD),   "no-effect"         );
 
    return 1;
 }
@@ -79,96 +79,27 @@ e_mod_comp_policy_app_close_check(E_Comp_Win *cw)
    return EINA_FALSE;
 }
 
-EINTERN Eina_Bool
-e_mod_comp_policy_win_restack_check(E_Comp_Win *cw,
-                                    E_Comp_Win *cw2)
+EINTERN char *
+e_mod_comp_policy_win_shadow_group_get(E_Comp_Win *cw)
 {
-   E_Comp_Effect_Style st;
-   Eina_Bool animatable;
    E_Comp_Win_Type type;
-   E_Comp_Win *tp, *tp2;
-
    E_CHECK_RETURN(cw, 0);
-   E_CHECK_RETURN(cw2, 0);
-   E_CHECK_RETURN(cw->c, 0);
-
    type = e_mod_comp_win_type_get(cw);
-   animatable = e_mod_comp_effect_state_get(cw->eff_type);
-   st = e_mod_comp_effect_style_get
-          (cw->eff_type,
-          E_COMP_EFFECT_KIND_RESTACK);
-
-   if ((!cw->c->animatable) ||
-       (!cw->visible) ||
-       (!animatable) ||
-       (st == E_COMP_EFFECT_STYLE_NONE) ||
-       (!REGION_EQUAL_TO_ROOT(cw)))
-     {
-        return EINA_FALSE;
-     }
-
-   tp  = _transient_parent_find(cw);
-   tp2 = _transient_parent_find(cw2);
-   if ((tp) && (tp2) && (tp->win == tp2->win))
-     {
-        return EINA_FALSE;
-     }
-
-   if ((type == E_COMP_WIN_TYPE_NORMAL) ||
-       (type == E_COMP_WIN_TYPE_MENUSCREEN) ||
-       (type == E_COMP_WIN_TYPE_TASKMANAGER) ||
-       (type == E_COMP_WIN_TYPE_LIVEMAGAZINE))
-     {
-        return EINA_TRUE;
-     }
-
-   return EINA_FALSE;
+   return eina_hash_find(shadow_hash, e_util_winid_str_get(type));
 }
 
+/* when receiving border show event for the home window,
+ * check before running app closing effect for given normal window.
+ * exceptional windows: lock, setup wizard
+ * otherwise: do app closing effect
+ */
 EINTERN Eina_Bool
-e_mod_comp_policy_win_lower_check(E_Comp_Win *cw,
-                                  E_Comp_Win *cw2)
+e_mod_comp_policy_home_app_win_check(E_Comp_Win *cw)
 {
-   E_Comp_Effect_Style st1, st2;
-   Eina_Bool animatable1, animatable2;
-   E_Comp_Win *tp, *tp2;
-
-   E_CHECK_RETURN(cw, 0);
-   E_CHECK_RETURN(cw2, 0);
-   E_CHECK_RETURN(cw->c, 0);
-   E_CHECK_RETURN(cw->c->animatable, 0);
-   E_CHECK_RETURN(cw->visible, 0);
-   E_CHECK_RETURN(cw2->visible, 0);
-   if (!REGION_EQUAL_TO_ROOT(cw)) return EINA_FALSE;
-   if (!REGION_EQUAL_TO_ROOT(cw2)) return EINA_FALSE;
-
-   animatable1 = e_mod_comp_effect_state_get(cw->eff_type);
-   animatable2 = e_mod_comp_effect_state_get(cw2->eff_type);
-   E_CHECK_RETURN(animatable1, 0);
-   E_CHECK_RETURN(animatable2, 0);
-
-   if ((!TYPE_NORMAL_CHECK(cw)) &&
-       (!TYPE_NORMAL_CHECK(cw2)))
-     {
-        return EINA_FALSE;
-     }
-
-   if ((!TYPE_NORMAL_CHECK(cw)) &&
-       (!TYPE_HOME_CHECK(cw2)))
-     {
-        return EINA_FALSE;
-     }
+   E_CHECK_RETURN(cw, EINA_FALSE);
 
-   st1 = e_mod_comp_effect_style_get
-           (cw->eff_type, E_COMP_EFFECT_KIND_RESTACK);
-   st2 = e_mod_comp_effect_style_get
-           (cw2->eff_type, E_COMP_EFFECT_KIND_RESTACK);
-   E_CHECK_RETURN((st1 != E_COMP_EFFECT_STYLE_NONE), 0);
-   E_CHECK_RETURN((st2 != E_COMP_EFFECT_STYLE_NONE), 0);
-
-   tp  = _transient_parent_find(cw);
-   tp2 = _transient_parent_find(cw2);
-   if ((tp) && (tp2) && (tp->win == tp2->win))
+   if (TYPE_LOCKSCREEN_CHECK(cw) ||
+       TYPE_SETUP_WIZARD_CHECK(cw))
      {
         return EINA_FALSE;
      }
@@ -176,77 +107,4 @@ e_mod_comp_policy_win_lower_check(E_Comp_Win *cw,
    return EINA_TRUE;
 }
 
-EINTERN Eina_Bool
-e_mod_comp_policy_win_rotation_effect_check(E_Comp_Win *cw)
-{
-   E_Comp_Effect_Style st;
-   Eina_Bool animatable;
-   const char *file, *group;
-   E_Comp_Object *co;
-
-   E_CHECK_RETURN(cw, 0);
-   E_CHECK_RETURN(cw->c, 0);
-   E_CHECK_RETURN(cw->c->animatable, 0);
-   E_CHECK_RETURN(cw->visible, 0);
-   E_CHECK_RETURN(cw->bd, 0);
-   E_CHECK_RETURN(cw->objs, 0);
-
-   animatable = e_mod_comp_effect_state_get(cw->eff_type);
-   E_CHECK_RETURN(animatable, 0);
-
-   co = eina_list_data_get(cw->objs);
-   E_CHECK_RETURN(co, 0);
-
-   edje_object_file_get(co->shadow, &file, &group);
-   if ((strcmp(group, "shadow_fade") != 0) &&
-       (strcmp(group, "shadow_twist") !=0))
-     {
-        return EINA_FALSE;
-     }
-
-   st = e_mod_comp_effect_style_get
-          (cw->eff_type,
-          E_COMP_EFFECT_KIND_ROTATION);
-   if (st == E_COMP_EFFECT_STYLE_NONE)
-     return EINA_FALSE;
-
-   if ((e_mod_comp_util_win_visible_get(cw)) &&
-       (evas_object_visible_get(co->shadow)) &&
-       TYPE_NORMAL_CHECK(cw))
-     {
-        return EINA_TRUE;
-     }
-   return EINA_FALSE;
-}
-
-EINTERN char *
-e_mod_comp_policy_win_shadow_group_get(E_Comp_Win *cw)
-{
-   E_Comp_Win_Type type;
-   E_CHECK_RETURN(cw, 0);
-   type = e_mod_comp_win_type_get(cw);
-   return eina_hash_find(shadow_hash, e_util_winid_str_get(type));
-}
-
 /* local subsystem functions */
-static E_Comp_Win *
-_transient_parent_find(E_Comp_Win *cw)
-{
-   // if Border is not existed then, return itself.
-   // otherwise, return itself or parent.
-   Ecore_X_Window transient_parent;
-   E_Comp_Win *parent_cw = NULL;
-   E_Border *bd = NULL;
-   if (cw->bd)
-     {
-        bd = cw->bd;
-        do {
-             transient_parent = bd->win;
-             bd = bd->parent;
-        } while (bd);
-
-        parent_cw = e_mod_comp_win_find(transient_parent);
-        return parent_cw;
-     }
-   return cw;
-}
index 715eaff..b0b3c94 100644 (file)
@@ -6,11 +6,9 @@
 EINTERN int       e_mod_comp_policy_init(void);
 EINTERN int       e_mod_comp_policy_shutdown(void);
 EINTERN Eina_Bool e_mod_comp_policy_app_launch_check(E_Comp_Win *cw);
-EINTERN Eina_Bool e_mod_comp_policy_app_close_check (E_Comp_Win *cw);
-EINTERN Eina_Bool e_mod_comp_policy_win_restack_check(E_Comp_Win *cw, E_Comp_Win *cw2);
-EINTERN Eina_Bool e_mod_comp_policy_win_lower_check(E_Comp_Win *cw, E_Comp_Win *cw2);
-EINTERN Eina_Bool e_mod_comp_policy_win_rotation_effect_check(E_Comp_Win *cw);
+EINTERN Eina_Bool e_mod_comp_policy_app_close_check(E_Comp_Win *cw);
 EINTERN char     *e_mod_comp_policy_win_shadow_group_get(E_Comp_Win *cw);
+EINTERN Eina_Bool e_mod_comp_policy_home_app_win_check(E_Comp_Win *cw);
 
 #endif
 #endif
index 63b8715..7272caa 100644 (file)
@@ -19,6 +19,7 @@ typedef enum _E_Comp_Win_Class_Type
    E_COMP_WIN_CLASS_TYPE_MINI_APPTRAY,
    E_COMP_WIN_CLASS_TYPE_VOLUME,
    E_COMP_WIN_CLASS_TYPE_BACKGROUND,
+   E_COMP_WIN_CLASS_TYPE_SETUP_WIZARD,
    E_COMP_WIN_CLASS_TYPE_ISF,
 } E_Comp_Win_Class_Type;
 
@@ -38,6 +39,7 @@ typedef enum _E_Comp_Win_Name_Type
    E_COMP_WIN_NAME_TYPE_MINI_APPTRAY,
    E_COMP_WIN_NAME_TYPE_VOLUME,
    E_COMP_WIN_NAME_TYPE_BACKGROUND,
+   E_COMP_WIN_NAME_TYPE_SETUP_WIZARD,
    E_COMP_WIN_NAME_TYPE_ISF_KEYBOARD,
    E_COMP_WIN_NAME_TYPE_ISF_SUB,
 } E_Comp_Win_Name_Type;
@@ -63,6 +65,7 @@ static const char *win_class[] =
    "MINIAPP_TRAY",
    "volume",
    "BACKGROUND",
+   "SETUP_WIZARD",
    "ISF",
 };
 
@@ -82,6 +85,7 @@ static const char *win_name[] =
    "MINIAPP_TRAY",
    "volume",
    "BACKGROUND",
+   "SETUP_WIZARD",
    // E_COMP_WIN_NAME_TYPE_ISF_KEYBOARD
    "Virtual Keyboard",
    // E_COMP_WIN_NAME_TYPE_ISF_SUB
@@ -108,7 +112,8 @@ static E_Comp_Win_Class_Type win_class_vals[] =
    E_COMP_WIN_CLASS_TYPE_MINI_APPTRAY,
    E_COMP_WIN_CLASS_TYPE_VOLUME,
    E_COMP_WIN_CLASS_TYPE_BACKGROUND,
-   E_COMP_WIN_CLASS_TYPE_ISF
+   E_COMP_WIN_CLASS_TYPE_SETUP_WIZARD,
+   E_COMP_WIN_CLASS_TYPE_ISF,
 };
 
 static E_Comp_Win_Class_Type win_name_vals[] =
@@ -127,8 +132,9 @@ static E_Comp_Win_Class_Type win_name_vals[] =
    E_COMP_WIN_NAME_TYPE_MINI_APPTRAY,
    E_COMP_WIN_NAME_TYPE_VOLUME,
    E_COMP_WIN_NAME_TYPE_BACKGROUND,
+   E_COMP_WIN_NAME_TYPE_SETUP_WIZARD,
    E_COMP_WIN_NAME_TYPE_ISF_KEYBOARD,
-   E_COMP_WIN_NAME_TYPE_ISF_SUB
+   E_COMP_WIN_NAME_TYPE_ISF_SUB,
 };
 
 static Eina_Hash *class_hash  = NULL;
@@ -287,6 +293,10 @@ e_mod_comp_win_type_setup(E_Comp_Win *cw)
          if (ntype == E_COMP_WIN_NAME_TYPE_BACKGROUND)
            res = E_COMP_WIN_TYPE_BACKGROUND;
          break;
+      case E_COMP_WIN_CLASS_TYPE_SETUP_WIZARD:
+         if (ntype == E_COMP_WIN_NAME_TYPE_SETUP_WIZARD)
+         res = E_COMP_WIN_TYPE_SETUP_WIZARD;
+         break;
       default:
          break;
      }
index 3a2751a..6d7b61d 100644 (file)
 #define TYPE_MINI_APPTRAY_CHECK(a) \
    ((a)->win_type == E_COMP_WIN_TYPE_MINI_APPTRAY)
 
+#define TYPE_LOCKSCREEN_CHECK(a) \
+   ((a)->win_type == E_COMP_WIN_TYPE_LOCKSCREEN)
+
+#define TYPE_SETUP_WIZARD_CHECK(a) \
+   ((a)->win_type == E_COMP_WIN_TYPE_SETUP_WIZARD)
+
 typedef enum _E_Comp_Win_Type
 {
    E_COMP_WIN_TYPE_UNKNOWN = 0,
@@ -69,6 +75,7 @@ typedef enum _E_Comp_Win_Type
    E_COMP_WIN_TYPE_MINI_APPTRAY,
    E_COMP_WIN_TYPE_VOLUME,
    E_COMP_WIN_TYPE_BACKGROUND,
+   E_COMP_WIN_TYPE_SETUP_WIZARD,
    E_COMP_WIN_TYPE_ISF_KEYBOARD,
    E_COMP_WIN_TYPE_ISF_SUB,
 } E_Comp_Win_Type;
index b4dd0a0..e5abf4c 100644 (file)
@@ -25,8 +25,8 @@ collections
 
    group
      {
-        images.image: "RB0_resize.png" COMP;
-        images.image: "RB0_resize_notAvail.png" COMP;
+        images.image: "mw_frame_press.png" COMP;
+        images.image: "mw_frame_press_overscroll.png" COMP;
         name: "new_shadow";
         max: 720 720;
         parts
@@ -49,14 +49,14 @@ collections
                   description
                     {
                        state: "default" 0;
-                       image.normal: "RB0_resize.png";
+                       image.normal: "mw_frame_press.png";
                        image.border: 5 5 5 5;
                        image.middle: NONE;
                     }
                   description
                     {
                        state: "not_avail" 0;
-                       image.normal: "RB0_resize_notAvail.png";
+                       image.normal: "mw_frame_press_overscroll.png";
                        image.border: 5 5 5 5;
                     }
                }
index 8b54821..9f545f3 100644 (file)
@@ -497,6 +497,7 @@ _e_mod_floating_smart_cleanup(Ecore_X_Event_Client_Message *event __UNUSED__)
      {
         border = ft_bd->bd;
         if (!border) continue;
+        if (e_object_is_del(E_OBJECT(border))) continue;
         /* Build a list of windows not iconified. */
         if ((!border->iconic) && (!border->lock_user_location))
           {
@@ -527,7 +528,7 @@ _e_mod_floating_smart_cleanup(Ecore_X_Event_Client_Message *event __UNUSED__)
    EINA_LIST_FREE(borders, border)
      {
         int new_x, new_y;
-
+        if (e_object_is_del(E_OBJECT(border))) continue;
         e_place_zone_region_smart(border->zone, borders, border->x, border->y,
                                   border->w, border->h, &new_x, &new_y);
         e_border_move(border, new_x, new_y);
diff --git a/illume2-tizen/src/images/RB0_resize_notAvail.png b/illume2-tizen/src/images/RB0_resize_notAvail.png
deleted file mode 100755 (executable)
index 5dc8588..0000000
Binary files a/illume2-tizen/src/images/RB0_resize_notAvail.png and /dev/null differ
diff --git a/illume2-tizen/src/images/mw_frame_press_overscroll.png b/illume2-tizen/src/images/mw_frame_press_overscroll.png
new file mode 100755 (executable)
index 0000000..42a6d7e
Binary files /dev/null and b/illume2-tizen/src/images/mw_frame_press_overscroll.png differ
index cb95531..8028b24 100644 (file)
@@ -170,7 +170,7 @@ static void _policy_border_uniconify_below_borders(E_Border *bd);
 static void _policy_border_uniconify_top_border(E_Border *bd);
 
 /* for supporting rotation */
-static void       _policy_border_dependent_rotation(E_Border *bd);
+static void       _policy_border_dependent_rotation(E_Border *bd, int rotation);
 static Eina_Bool _policy_dependent_rotation_check(E_Border *bd, int rotation);
 static int _prev_angle_get(Ecore_X_Window win);
 
@@ -945,7 +945,8 @@ _policy_border_del(E_Border *bd)
    if (e_illume_border_is_quickpanel(bd) ||
        e_illume_border_is_miniapp_tray(bd) ||
        (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) ||
-       e_illume_border_is_syspopup(bd))
+       e_illume_border_is_syspopup(bd) ||
+       e_illume_border_is_app_selector(bd))
      dep_rot.list = eina_list_remove(dep_rot.list, bd);
 }
 
@@ -1047,7 +1048,8 @@ _policy_border_post_fetch(E_Border *bd)
    if (e_illume_border_is_quickpanel(bd) ||
        e_illume_border_is_miniapp_tray(bd) ||
        (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) ||
-       e_illume_border_is_syspopup(bd))
+       e_illume_border_is_syspopup(bd) ||
+       e_illume_border_is_app_selector(bd))
      {
         bd->client.e.state.rot.type = E_BORDER_ROTATION_TYPE_DEPENDENT;
         if (!eina_list_data_find(dep_rot.list, bd))
@@ -5388,7 +5390,7 @@ _policy_change_root_angle_by_border_angle (E_Border* bd)
              if (ang == -1) ang = 0;
 
              if (dep_rot.ang != ang)
-               _policy_border_dependent_rotation(bd);
+               _policy_border_dependent_rotation(bd, ang);
           }
      }
 
@@ -6528,21 +6530,23 @@ fin:
 void
 _policy_border_hook_rotation_list_add(E_Border *bd)
 {
-   _policy_border_dependent_rotation(bd);
+   int rotation = 0;
+   if (!bd) return;
+
+   rotation = bd->client.e.state.rot.curr;
+   _policy_border_dependent_rotation(bd, rotation);
 }
 
 static void
-_policy_border_dependent_rotation(E_Border *bd)
+_policy_border_dependent_rotation(E_Border *bd, int rotation)
 {
    Eina_List *l;
    E_Border *dep_bd = NULL;
-   int rotation = 0;
 
    if (!bd) return;
    if (!dep_rot.list) return;
    if (dep_rot.refer.active_win != bd->client.win) return;
 
-   rotation = bd->client.e.state.rot.curr;
    EINA_LIST_FOREACH(dep_rot.list, l, dep_bd)
      {
         if (!dep_bd) continue;
@@ -6550,10 +6554,10 @@ _policy_border_dependent_rotation(E_Border *bd)
           {
              ELBF(ELBT_ROT, 0, dep_bd->client.win, "ROT_SET ANG [%d -> %d]",
                   dep_bd->client.e.state.rot.curr, rotation);
-             dep_rot.ang = rotation;
              e_border_rotation_set(dep_bd, rotation);
           }
      }
+   dep_rot.ang = rotation;
 }
 
 static Eina_Bool
@@ -6596,6 +6600,7 @@ _policy_property_active_indicator_win_change(Ecore_X_Event_Window_Property *even
 {
    Ecore_X_Window active_win = 0;
    E_Border *bd = NULL;
+   int rotation = 0;
 
    if (!event) return;
 
@@ -6649,9 +6654,9 @@ _policy_property_active_indicator_win_change(Ecore_X_Event_Window_Property *even
                   bd->client.icccm.name ? bd->client.icccm.name : "",
                   active_win);
              dep_rot.refer.active_win = active_win;
-             dep_rot.ang = bd->client.e.state.rot.curr;
+             rotation = bd->client.e.state.rot.curr;
 
-             _policy_border_dependent_rotation(bd);
+             _policy_border_dependent_rotation(bd, rotation);
           }
      }
 }
index 2e03b2d..0b84651 100644 (file)
@@ -16,6 +16,7 @@ typedef enum _E_Move_Border_Class_Type
    E_MOVE_BORDER_CLASS_TYPE_APPTRAY,
    E_MOVE_BORDER_CLASS_TYPE_MINI_APPTRAY,
    E_MOVE_BORDER_CLASS_TYPE_SETUP_WIZARD,
+   E_MOVE_BORDER_CLASS_TYPE_APP_SELECTOR,
    E_MOVE_BORDER_CLASS_TYPE_PWLOCK,
    E_MOVE_BORDER_CLASS_TYPE_BACKGROUND,
    E_MOVE_BORDER_CLASS_TYPE_ISF,
@@ -35,6 +36,7 @@ typedef enum _E_Move_Border_Name_Type
    E_MOVE_BORDER_NAME_TYPE_APPTRAY,
    E_MOVE_BORDER_NAME_TYPE_MINI_APPTRAY,
    E_MOVE_BORDER_NAME_TYPE_SETUP_WIZARD,
+   E_MOVE_BORDER_NAME_TYPE_APP_SELECTOR,
    E_MOVE_BORDER_NAME_TYPE_PWLOCK,
    E_MOVE_BORDER_NAME_TYPE_BACKGROUND,
    E_MOVE_BORDER_NAME_TYPE_ISF_KEYBOARD,
@@ -58,6 +60,7 @@ static const char *border_class[] =
    "APP_TRAY",
    "MINIAPP_TRAY",
    "SETUP_WIZARD",
+   "APP_SELECTOR",
    //"PW_LOCK",
    "pwlock",
    "BACKGROUND",
@@ -77,6 +80,7 @@ static const char *border_name[] =
    "APP_TRAY",
    "MINIAPP_TRAY",
    "SETUP_WIZARD",
+   "APP_SELECTOR",
    //"PW_LOCK",
    "pwlock",
    "BACKGROUND",
@@ -135,6 +139,7 @@ static E_Move_Border_Class_Type border_class_vals[] =
    E_MOVE_BORDER_CLASS_TYPE_APPTRAY,
    E_MOVE_BORDER_CLASS_TYPE_MINI_APPTRAY,
    E_MOVE_BORDER_CLASS_TYPE_SETUP_WIZARD,
+   E_MOVE_BORDER_CLASS_TYPE_APP_SELECTOR,
    E_MOVE_BORDER_CLASS_TYPE_PWLOCK,
    E_MOVE_BORDER_CLASS_TYPE_BACKGROUND,
    E_MOVE_BORDER_CLASS_TYPE_ISF
@@ -153,6 +158,7 @@ static E_Move_Border_Class_Type border_name_vals[] =
    E_MOVE_BORDER_NAME_TYPE_APPTRAY,
    E_MOVE_BORDER_NAME_TYPE_MINI_APPTRAY,
    E_MOVE_BORDER_NAME_TYPE_SETUP_WIZARD,
+   E_MOVE_BORDER_NAME_TYPE_APP_SELECTOR,
    E_MOVE_BORDER_NAME_TYPE_PWLOCK,
    E_MOVE_BORDER_NAME_TYPE_BACKGROUND,
    E_MOVE_BORDER_NAME_TYPE_ISF_KEYBOARD,
@@ -338,6 +344,9 @@ e_mod_move_border_type_setup(E_Move_Border *mb)
       case E_MOVE_BORDER_CLASS_TYPE_SETUP_WIZARD:
          if (ntype == E_MOVE_BORDER_NAME_TYPE_SETUP_WIZARD)
            res = E_MOVE_BORDER_TYPE_SETUP_WIZARD;
+      case E_MOVE_BORDER_CLASS_TYPE_APP_SELECTOR:
+         if (ntype == E_MOVE_BORDER_NAME_TYPE_APP_SELECTOR)
+           res = E_MOVE_BORDER_TYPE_APP_SELECTOR;
       case E_MOVE_BORDER_CLASS_TYPE_PWLOCK:
          if (ntype == E_MOVE_BORDER_NAME_TYPE_PWLOCK)
            res = E_MOVE_BORDER_TYPE_PWLOCK;
index 3fd1c0f..17d66ba 100644 (file)
@@ -37,6 +37,9 @@
 #define TYPE_SETUP_WIZARD_CHECK(a) \
    ((a)->type == E_MOVE_BORDER_TYPE_SETUP_WIZARD)
 
+#define TYPE_APP_SELECTOR_CHECK(a) \
+   ((a)->type == E_MOVE_BORDER_TYPE_APP_SELECTOR)
+
 typedef enum _E_Move_Border_Type
 {
    E_MOVE_BORDER_TYPE_UNKNOWN = 0,
@@ -65,6 +68,7 @@ typedef enum _E_Move_Border_Type
    E_MOVE_BORDER_TYPE_APPTRAY,
    E_MOVE_BORDER_TYPE_MINI_APPTRAY,
    E_MOVE_BORDER_TYPE_SETUP_WIZARD,
+   E_MOVE_BORDER_TYPE_APP_SELECTOR,
    E_MOVE_BORDER_TYPE_PWLOCK,
    E_MOVE_BORDER_TYPE_BACKGROUND,
    E_MOVE_BORDER_TYPE_ISF_KEYBOARD,
index c3e7c7e..7d8aa93 100644 (file)
@@ -120,6 +120,8 @@ _e_mod_move_indicator_widget_cb_motion_start_internal_apptray_check(E_Move_Borde
 static Eina_Bool
 _e_mod_move_indicator_widget_cb_motion_start_internal_quickpanel_check(E_Move_Border *qp_mb)
 {
+   E_Move_Border *mini_apptray_mb = NULL;
+
    E_CHECK_RETURN(qp_mb, EINA_FALSE);
    E_CHECK_RETURN(TYPE_QUICKPANEL_CHECK(qp_mb), EINA_FALSE);
    E_CHECK_RETURN(qp_mb->visible, EINA_FALSE);
@@ -136,6 +138,10 @@ _e_mod_move_indicator_widget_cb_motion_start_internal_quickpanel_check(E_Move_Bo
 
    if (e_mod_move_quickpanel_objs_animation_state_get(qp_mb)) return EINA_FALSE;
 
+   mini_apptray_mb = e_mod_move_mini_apptray_find();
+   if (e_mod_move_mini_apptray_objs_animation_state_get(mini_apptray_mb))
+     return EINA_FALSE;
+
    if (!(qp_mb->m->qp_scroll_with_clipping))
      e_mod_move_quickpanel_dim_show(qp_mb);
 
@@ -1099,7 +1105,7 @@ _e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win,
           continue;
 
         // if notification , alpha, and indicator_state_none then search again below.
-        if (TYPE_NOTIFICATION_CHECK(find_mb)
+        if ((TYPE_NOTIFICATION_CHECK(find_mb) || TYPE_APP_SELECTOR_CHECK(find_mb))
             && (find_mb->argb)
             && (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE))
           {
@@ -1224,7 +1230,7 @@ _e_mod_move_indicator_widget_active_indicator_win_find_and_set(void)
      {
         target_mb = e_mod_move_border_client_find(target_win);
         E_CHECK(target_mb);
-        if (TYPE_NOTIFICATION_CHECK(target_mb)
+        if ((TYPE_NOTIFICATION_CHECK(target_mb) || TYPE_APP_SELECTOR_CHECK(target_mb))
             && (target_mb->argb)
             && (target_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE))
           {
@@ -1317,12 +1323,11 @@ e_mod_move_indicator_widget_apply(void)
 
    m = e_mod_move_util_get();
    E_CHECK(m);
-   if (m->screen_reader_state)
+   if ((m->screen_reader_state) || (m->setup_wizard_state))
      {
         _e_mod_move_indicator_widget_active_indicator_win_find_and_set();
         return;
      }
-   if (m->setup_wizard_state) return;
 
    if (e_mod_move_indicator_widget_target_window_find(&target_win))
      {
@@ -1340,7 +1345,7 @@ e_mod_move_indicator_widget_apply(void)
                   e_mod_move_indicator_widget_del(indi_widget);
                   e_mod_move_indicator_widget_set(e_mod_move_indicator_widget_add(target_win));
                   if ((target_mb) &&
-                      (TYPE_NOTIFICATION_CHECK(target_mb)) &&
+                      (TYPE_NOTIFICATION_CHECK(target_mb) || TYPE_APP_SELECTOR_CHECK(target_mb)) &&
                       (target_mb->argb) &&
                       (target_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE))
                     {
@@ -1356,9 +1361,10 @@ e_mod_move_indicator_widget_apply(void)
              //then add new indicator widget.
              e_mod_move_indicator_widget_set(e_mod_move_indicator_widget_add(target_win));
 
-             if (TYPE_NOTIFICATION_CHECK(target_mb)
-                 && (target_mb->argb)
-                 && (target_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE))
+             if ((target_mb) &&
+                 (TYPE_NOTIFICATION_CHECK(target_mb) || TYPE_APP_SELECTOR_CHECK(target_mb)) &&
+                 (target_mb->argb) &&
+                 (target_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE))
                {
                   ;
                }
index 30ade60..8e7af9f 100644 (file)
@@ -629,6 +629,7 @@ e_mod_move_mini_apptray_objs_add(E_Move_Border *mb)
         e_mod_move_bd_move_objs_move(mb, mb->x, mb->y);
         e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
         e_mod_move_bd_move_objs_show(mb);
+        e_mod_move_util_screen_input_block(mb->m);
 
         if (!evas_object_visible_get(ly))
           evas_object_show(ly);
@@ -661,17 +662,23 @@ e_mod_move_mini_apptray_objs_add_with_pos(E_Move_Border *mb,
 EINTERN Eina_Bool
 e_mod_move_mini_apptray_objs_del(E_Move_Border *mb)
 {
-   Evas_Object *ly = NULL;
+   E_Move_Border *qp_mb = NULL;
+   Evas_Object   *ly = NULL;
    E_CHECK_RETURN(mb, EINA_FALSE);
    E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
    ly = e_mod_move_util_comp_layer_get(mb->m, "move");
    E_CHECK_RETURN(ly, EINA_FALSE);
    if (evas_object_visible_get(ly))
-     evas_object_hide(ly);
+     {
+        qp_mb = e_mod_move_quickpanel_find();
+        if (!e_mod_move_quickpanel_objs_animation_state_get(qp_mb))
+          evas_object_hide(ly);
+     }
    e_mod_move_bd_move_objs_del(mb, mb->objs);
    e_mod_move_util_rotation_unlock(mb->m);
    // Composite mode set False
    e_mod_move_util_compositor_composite_mode_set(mb->m, EINA_FALSE);
+   e_mod_move_util_screen_input_unblock(mb->m);
    mb->objs = NULL;
    return EINA_TRUE;
 }
index 3e6d4c2..851bfcc 100644 (file)
@@ -36,6 +36,7 @@ _e_mod_move_mini_apptray_widget_cb_motion_start_internal_mini_apptray_check(E_Mo
 {
    E_Move        *m;
    E_Move_Border *find_mb = NULL;
+   E_Move_Border *qp_mb = NULL;
    Eina_Bool      found = EINA_FALSE;
    m = e_mod_move_util_get();
 
@@ -47,6 +48,9 @@ _e_mod_move_mini_apptray_widget_cb_motion_start_internal_mini_apptray_check(E_Mo
                   EINA_FALSE);
    if (e_mod_move_mini_apptray_objs_animation_state_get(mini_apptray_mb)) return EINA_FALSE;
 
+   qp_mb = e_mod_move_quickpanel_find();
+   if (e_mod_move_quickpanel_objs_animation_state_get(qp_mb)) return EINA_FALSE;
+
    // Mini app-tray is under rotation state.
    // I think there is another exception case.
    // It's posible that WM doesn't send rotation change request yet.
index 0b56fb6..33d0a29 100644 (file)
@@ -674,9 +674,6 @@ _e_mod_move_quickpanel_objs_animation_frame(void  *data,
               ecore_x_e_illume_quickpanel_state_set(zone->black_win, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
            }
 
-         // restore comp layer's position
-         _e_mod_move_quickpanel_comp_layer_obj_move_intern(zone->x, zone->y);
-
          memset(anim_data, 0, sizeof(E_Move_Quickpanel_Animation_Data));
          E_FREE(anim_data);
          mb->anim_data = NULL;
@@ -1762,17 +1759,30 @@ e_mod_move_quickpanel_objs_add(E_Move_Border *mb)
 EINTERN Eina_Bool
 e_mod_move_quickpanel_objs_del(E_Move_Border *mb)
 {
-   E_Move *m = NULL;
-   Evas_Object *move_layer = NULL;
+   E_Move        *m = NULL;
+   E_Manager     *man = NULL;
+   E_Zone        *zone = NULL;
+   Evas_Object   *move_layer = NULL;
+   E_Move_Border *mini_apptray_mb = NULL;
    E_CHECK_RETURN(mb, EINA_FALSE);
    E_CHECK_RETURN(TYPE_QUICKPANEL_CHECK(mb), EINA_FALSE);
    m = mb->m;
+   E_CHECK_RETURN(m, EINA_FALSE);
+   man = m->man;
+   E_CHECK_RETURN(man,EINA_FALSE);
+   zone = e_util_zone_current_get(man);
+   // restore comp layer's position
+   if (zone) _e_mod_move_quickpanel_comp_layer_obj_move_intern(zone->x, zone->y);
 
    move_layer = e_mod_move_util_comp_layer_get(m, "move");
    E_CHECK_RETURN(move_layer, EINA_FALSE);
 
     if (evas_object_visible_get(move_layer))
-      evas_object_hide(move_layer);
+      {
+         mini_apptray_mb = e_mod_move_mini_apptray_find();
+         if (!e_mod_move_mini_apptray_objs_animation_state_get(mini_apptray_mb))
+           evas_object_hide(move_layer);
+      }
 
    if (m->qp_scroll_with_clipping)
      {
index 1522359..195adb1 100644 (file)
@@ -274,6 +274,10 @@ _app_tray_open(Cover *cov)
      {
         if (!bd) continue;
         if (!bd->visible) continue;
+
+        /* UTILITY type such as keyboard window could come first, before NORMAL
+           type such as app tray, quickpanel window comes */
+        if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_UTILITY) continue;
         if (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_NORMAL) break;
 
         name = bd->client.icccm.name;
@@ -310,6 +314,10 @@ _quickpanel_open(void)
      {
         if (!bd) continue;
         if (!bd->visible) continue;
+
+        /* UTILITY type such as keyboard window could come first, before NORMAL
+           type such as app tray, quickpanel window comes */
+        if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_UTILITY) continue;
         if (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_NORMAL) break;
 
         name = bd->client.icccm.name;
@@ -324,6 +332,11 @@ _quickpanel_open(void)
         ecore_x_e_illume_quickpanel_state_send
           (ecore_x_e_illume_zone_get(bd->client.win),
            ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+
+        /* set unfocused window to quickpanel (unfocused window), otherwise
+          target window would set to focused window in _target_window_find(); */
+        target_win = bd->client.win;
+        unfocused_win = bd->client.win;
         break;
      }
 }
@@ -1283,6 +1296,10 @@ _cb_property_change(void *data __UNUSED__,
         bd = e_border_focused_get();
         if (bd)
           {
+             /* if there was an unfocused window, the target window is changed
+                in the _target_window_find();. so reset unfocused window here */
+             if (unfocused_win) unfocused_win = 0;
+
              target_win = bd->client.win;
              _screen_reader_support_check();
           }