From: Gwanglim Lee Date: Mon, 1 Jul 2013 16:50:23 +0000 (+0900) Subject: Merged with devel X-Git-Tag: submit/tizen_2.2/20130714.144759~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9a2e2bb44594e770f45360323a1a9e2677f8084c;p=platform%2Fcore%2Fuifw%2Fe17-extra-modules.git Merged with devel Change-Id: I4d1a60d88947e6d9292d85ed3f0bbbda869a60f5 --- diff --git a/comp-tizen/src/e_mod_comp_effect.c b/comp-tizen/src/e_mod_comp_effect.c index 1f1f124..38dad4f 100644 --- a/comp-tizen/src/e_mod_comp_effect.c +++ b/comp-tizen/src/e_mod_comp_effect.c @@ -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"); diff --git a/comp-tizen/src/e_mod_comp_effect_win_rotation.c b/comp-tizen/src/e_mod_comp_effect_win_rotation.c index ef32686..43277bf 100644 --- a/comp-tizen/src/e_mod_comp_effect_win_rotation.c +++ b/comp-tizen/src/e_mod_comp_effect_win_rotation.c @@ -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; - } } } } diff --git a/comp-tizen/src/e_mod_comp_policy.c b/comp-tizen/src/e_mod_comp_policy.c index 43a8b0d..2fb27e8 100644 --- a/comp-tizen/src/e_mod_comp_policy.c +++ b/comp-tizen/src/e_mod_comp_policy.c @@ -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; -} diff --git a/comp-tizen/src/e_mod_comp_policy.h b/comp-tizen/src/e_mod_comp_policy.h index 715eaff..b0b3c94 100644 --- a/comp-tizen/src/e_mod_comp_policy.h +++ b/comp-tizen/src/e_mod_comp_policy.h @@ -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 diff --git a/comp-tizen/src/e_mod_comp_win_type.c b/comp-tizen/src/e_mod_comp_win_type.c index 63b8715..7272caa 100644 --- a/comp-tizen/src/e_mod_comp_win_type.c +++ b/comp-tizen/src/e_mod_comp_win_type.c @@ -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; } diff --git a/comp-tizen/src/e_mod_comp_win_type.h b/comp-tizen/src/e_mod_comp_win_type.h index 3a2751a..6d7b61d 100644 --- a/comp-tizen/src/e_mod_comp_win_type.h +++ b/comp-tizen/src/e_mod_comp_win_type.h @@ -38,6 +38,12 @@ #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; diff --git a/illume2-tizen/src/e-module-illume2-tizen.edc b/illume2-tizen/src/e-module-illume2-tizen.edc index b4dd0a0..e5abf4c 100644 --- a/illume2-tizen/src/e-module-illume2-tizen.edc +++ b/illume2-tizen/src/e-module-illume2-tizen.edc @@ -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; } } diff --git a/illume2-tizen/src/e_mod_floating_window.c b/illume2-tizen/src/e_mod_floating_window.c index 8b54821..9f545f3 100644 --- a/illume2-tizen/src/e_mod_floating_window.c +++ b/illume2-tizen/src/e_mod_floating_window.c @@ -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 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/RB0_resize.png b/illume2-tizen/src/images/mw_frame_press.png similarity index 100% rename from illume2-tizen/src/images/RB0_resize.png rename to illume2-tizen/src/images/mw_frame_press.png 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 index 0000000..42a6d7e Binary files /dev/null and b/illume2-tizen/src/images/mw_frame_press_overscroll.png differ diff --git a/illume2-tizen/src/policies/illume/policy.c b/illume2-tizen/src/policies/illume/policy.c index cb95531..8028b24 100644 --- a/illume2-tizen/src/policies/illume/policy.c +++ b/illume2-tizen/src/policies/illume/policy.c @@ -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); } } } diff --git a/move-tizen/src/e_mod_move_border_type.c b/move-tizen/src/e_mod_move_border_type.c index 2e03b2d..0b84651 100644 --- a/move-tizen/src/e_mod_move_border_type.c +++ b/move-tizen/src/e_mod_move_border_type.c @@ -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; diff --git a/move-tizen/src/e_mod_move_border_type.h b/move-tizen/src/e_mod_move_border_type.h index 3fd1c0f..17d66ba 100644 --- a/move-tizen/src/e_mod_move_border_type.h +++ b/move-tizen/src/e_mod_move_border_type.h @@ -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, diff --git a/move-tizen/src/e_mod_move_indicator_widget.c b/move-tizen/src/e_mod_move_indicator_widget.c index c3e7c7e..7d8aa93 100644 --- a/move-tizen/src/e_mod_move_indicator_widget.c +++ b/move-tizen/src/e_mod_move_indicator_widget.c @@ -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)) { ; } diff --git a/move-tizen/src/e_mod_move_mini_apptray.c b/move-tizen/src/e_mod_move_mini_apptray.c index 30ade60..8e7af9f 100644 --- a/move-tizen/src/e_mod_move_mini_apptray.c +++ b/move-tizen/src/e_mod_move_mini_apptray.c @@ -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; } diff --git a/move-tizen/src/e_mod_move_mini_apptray_widget.c b/move-tizen/src/e_mod_move_mini_apptray_widget.c index 3e6d4c2..851bfcc 100644 --- a/move-tizen/src/e_mod_move_mini_apptray_widget.c +++ b/move-tizen/src/e_mod_move_mini_apptray_widget.c @@ -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. diff --git a/move-tizen/src/e_mod_move_quickpanel.c b/move-tizen/src/e_mod_move_quickpanel.c index 0b56fb6..33d0a29 100644 --- a/move-tizen/src/e_mod_move_quickpanel.c +++ b/move-tizen/src/e_mod_move_quickpanel.c @@ -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) { diff --git a/screen-reader/src/e_mod_main.c b/screen-reader/src/e_mod_main.c index 1522359..195adb1 100644 --- a/screen-reader/src/e_mod_main.c +++ b/screen-reader/src/e_mod_main.c @@ -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(); }