background_effect: make bottom most one to be opaque 90/140390/3
authorJuyeon Lee <juyeonne.lee@samsung.com>
Tue, 25 Jul 2017 02:37:39 +0000 (11:37 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Thu, 3 Aug 2017 01:35:05 +0000 (10:35 +0900)
Change-Id: I957f04fc34b7c3af4e483797090a8aa33e2679c8

data/group/background-zoom-fade.edc
src/e_mod_effect.c

index a91903a..c08df5e 100644 (file)
@@ -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;
index 4d830d9..4d350df 100644 (file)
@@ -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);
+               }
           }
      }
 }