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);
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))
{
}
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;
}
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;
((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:
{
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;
}
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;
{
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;
}
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);
+ }
}
}
}