From 577fbd68e884893bd14ce68e058ee1bd2b6842c0 Mon Sep 17 00:00:00 2001 From: Juyeon Lee Date: Tue, 25 Jul 2017 11:37:39 +0900 Subject: [PATCH] background_effect: make bottom most one to be opaque Change-Id: I957f04fc34b7c3af4e483797090a8aa33e2679c8 --- data/group/background-zoom-fade.edc | 12 ++++++++++++ src/e_mod_effect.c | 25 +++++++++++++++++++------ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/data/group/background-zoom-fade.edc b/data/group/background-zoom-fade.edc index a91903a..c08df5e 100644 --- a/data/group/background-zoom-fade.edc +++ b/data/group/background-zoom-fade.edc @@ -4,7 +4,9 @@ group { name: "e/comp/effects/background-zoom-fade"; if ((type == MSG_INT_SET) && (id == 0)) { /*set state */ new st; + new bg; st = getarg(2); + bg = getarg(3); if (st == 0) { set_state(PART:"e.swallow.content", "zoom-in", 0.0); @@ -15,6 +17,11 @@ group { name: "e/comp/effects/background-zoom-fade"; set_state(PART:"e.swallow.content", "zoom-out", 0.0); set_state(PART:"clipper", "zoom-out", 0.0); } + + if (bg) + { + set_state(PART:"bg", "opaque", 0.0); + } } else if ((type == MSG_INT_SET) && (id == 1)) { } @@ -24,6 +31,11 @@ group { name: "e/comp/effects/background-zoom-fade"; part { name: "bg"; type: RECT; description { state: "default" 0.0; + color: 0 0 0 0; + rel1.relative: 0 0; + rel2.relative: 1 1; + } + description { state: "opaque" 0.0; color: 0 0 0 255; rel1.relative: 0 0; rel2.relative: 1 1; diff --git a/src/e_mod_effect.c b/src/e_mod_effect.c index 4d830d9..4d350df 100644 --- a/src/e_mod_effect.c +++ b/src/e_mod_effect.c @@ -534,7 +534,7 @@ _eff_object_background_cb_zoom_out_done(void *data, Evas_Object *obj, const char } static void -_eff_object_background_start(E_Client *bg_ec, E_Effect_Type type) +_eff_object_background_start(E_Client *bg_ec, E_Effect_Type type, int bg_opaque) { E_Effect_Client *bg_efc = NULL; @@ -548,6 +548,8 @@ _eff_object_background_start(E_Client *bg_ec, E_Effect_Type type) ((bg_efc->animating) && !((bg_ec->launching) && (bg_efc->animating == 1)))) return; + // 1st param : zoom-in(0) zoom-out(1) + // 2nd param : background rect transparency(0) opaque(1) switch (type) { case E_EFFECT_TYPE_SHOW: @@ -556,7 +558,7 @@ _eff_object_background_start(E_Client *bg_ec, E_Effect_Type type) { e_object_ref(E_OBJECT(bg_ec)); _eff_object_setup(bg_ec, E_EFFECT_GROUP_BACKGROUND); - e_comp_object_effect_params_set(bg_ec->frame, 0, (int[]){0}, 1); + e_comp_object_effect_params_set(bg_ec->frame, 0, (int[]){0, bg_opaque}, 2); e_comp_object_effect_start(bg_ec->frame, _eff_object_background_cb_zoom_in_done, bg_ec); bg_efc->bg_animating = 1; } @@ -565,7 +567,7 @@ _eff_object_background_start(E_Client *bg_ec, E_Effect_Type type) case E_EFFECT_TYPE_RESTACK_HIDE: e_object_ref(E_OBJECT(bg_ec)); _eff_object_setup(bg_ec, E_EFFECT_GROUP_BACKGROUND); - e_comp_object_effect_params_set(bg_ec->frame, 0, (int[]){1}, 1); + e_comp_object_effect_params_set(bg_ec->frame, 0, (int[]){1, bg_opaque}, 2); e_comp_object_effect_start(bg_ec->frame, _eff_object_background_cb_zoom_out_done, bg_ec); bg_efc->bg_animating = 1; break; @@ -575,7 +577,7 @@ _eff_object_background_start(E_Client *bg_ec, E_Effect_Type type) { e_object_ref(E_OBJECT(bg_ec)); _eff_object_setup(bg_ec, E_EFFECT_GROUP_BACKGROUND); - e_comp_object_effect_params_set(bg_ec->frame, 0, (int[]){1}, 1); + e_comp_object_effect_params_set(bg_ec->frame, 0, (int[]){1, bg_opaque}, 2); e_comp_object_effect_start(bg_ec->frame, _eff_object_background_cb_zoom_out_done, bg_ec); bg_efc->bg_animating = 1; } @@ -603,15 +605,26 @@ _eff_object_background_setup(E_Client *ec, E_Client *home_ec, E_Effect_Group gro if ((ec->argb) || (ec->effect_type)) return; //need to check opaque? if (home_ec) - _eff_object_background_start(home_ec, type); + _eff_object_background_start(home_ec, type, 1); else { + int first = 1; + _eff_object_background_below_clients_get(ec, type, &bg_list); if (!bg_list) return; EINA_LIST_FREE(bg_list, bg_ec) { - _eff_object_background_start(bg_ec, type); + if (first) + { + EFFDBG("make bottom most background to be opaque", bg_ec->pixmap, bg_ec); + _eff_object_background_start(bg_ec, ec, type, 1); + first = 0; + } + else + { + _eff_object_background_start(bg_ec, ec, type, 0); + } } } } -- 2.34.1