discomfitor pushed a commit to branch devs/discomfitor/comp-border.

commit 4e72521f1db700d2d84bc29aaad68abb10a8b465
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Mar 1 15:21:49 2013 +0000

    move all desk transition stuff to edc
---
 data/themes/edc/comp.edc                     | 163 ++++++++++++++++++++++++++-
 data/themes/edc/illume.edc                   |   2 +
 src/bin/e_config.c                           |   6 +-
 src/bin/e_desk.c                             |  98 +++-------------
 src/modules/everything/evry_gadget.c         |  68 ++++-------
 src/modules/illume-home/e_busycover.c        |   2 +-
 src/modules/illume-home/e_mod_main.c         |   2 +-
 src/modules/illume-indicator/e_mod_ind_win.c |   2 +-
 src/modules/illume-softkey/e_mod_sft_win.c   |   4 +-
 src/modules/illume2/e_mod_kbd.c              |  41 +++++--
 src/modules/illume2/e_mod_quickpanel.c       |  50 ++++----
 src/modules/illume2/policies/illume/policy.c |  13 ++-
 src/modules/illume2/policies/tablet/policy.c |  13 ++-
 13 files changed, 285 insertions(+), 179 deletions(-)

diff --git a/data/themes/edc/comp.edc b/data/themes/edc/comp.edc
index 7cb8bfc..10ef095 100644
--- a/data/themes/edc/comp.edc
+++ b/data/themes/edc/comp.edc
@@ -250,7 +250,7 @@ group { name: "e/comp/effects/none";
    }
 }
 
-group { name: "e/comp/effects/linear";
+group { name: "e/comp/effects/move";
    script {
       public message(Msg_Type:type, id, ...) {
          if ((type == MSG_INT_SET) && (id == 0)) {
@@ -263,11 +263,12 @@ group { name: "e/comp/effects/linear";
             else
               set_state(PART:"mover", "default", 0.0);
          } else if ((type == MSG_INT_SET) && (id == 1)) {
-            /* start/end point */
+            /* x,y coords to move to */
             new x, y;
 
             x = getarg(2);
             y = getarg(3);
+
             custom_state(PART:"mover", "default", 0.0);
             set_state_val(PART:"mover", STATE_REL1_OFFSET, x, y);
             set_state_val(PART:"mover", STATE_REL2_OFFSET, x, y);
@@ -322,8 +323,137 @@ group { name: "e/comp/effects/linear";
    }
 }
 
+group { name: "e/comp/effects/pane";
+   script {
+      public message(Msg_Type:type, id, ...) {
+         if ((type == MSG_INT_SET) && (id == 0)) {
+            /* set state */
+            new st;
+
+            st = getarg(2);
+            if (st == 1)
+              set_state(PART:"mover", "custom", 0.0);
+            else
+              set_state(PART:"mover", "default", 0.0);
+         } else if ((type == MSG_INT_SET) && (id == 1)) {
+            /* border geom[4] / screen size[2] / desk change direction[2] */
+            new x, y, sw, sh, dx, dy;
+
+            sw = getarg(6);
+            sh = getarg(7);
+            dx = getarg(8);
+            dy = getarg(9);
+
+            x = round(sw*dx*1.5);
+            y = round(sh*dy*1.5);
+
+            custom_state(PART:"mover", "default", 0.0);
+            set_state_val(PART:"mover", STATE_REL1_OFFSET, x, y);
+            set_state_val(PART:"mover", STATE_REL2_OFFSET, x, y);
+         }
+      }
+   }
+   parts {
+      part { name: "mover"; type: SPACER;
+        description { state: "default" 0.0;
+        }
+      }
+      part { name: "e.swallow.content"; type: SWALLOW;
+        description { state: "default" 0.0;
+           rel1.to: "mover";
+           rel2.to: "mover";
+        }
+      }
+   }
+   programs {
+      program {
+         name: "show";
+         signal: "e,action,go";
+         source: "e";
+         filter: "mover" "default";
+         action: STATE_SET "custom" 0.0;
+         transition: DECELERATE 0.4 CURRENT;
+         target: "mover";
+         after: "done";
+      }
+      program {
+         name: "hide";
+         signal: "e,action,go";
+         source: "e";
+         filter: "mover" "custom";
+         action: STATE_SET "default" 0.0;
+         transition: DECELERATE 0.4 CURRENT;
+         target: "mover";
+         after: "done";
+      }
+      program {
+         name: "stop";
+         signal: "e,action,stop";
+         source: "e";
+         action: ACTION_STOP;
+         target: "show";
+         target: "hide";
+      }
+      program {
+         name: "done";
+         action: SIGNAL_EMIT "e,action,done" "e";
+      }
+   }
+}
+
+group { name: "e/comp/effects/diagonal";
+   inherit: "e/comp/effects/pane";
+   script {
+      public message(Msg_Type:type, id, ...) {
+         if ((type == MSG_INT_SET) && (id == 0)) {
+            /* set state */
+            new st;
+
+            st = getarg(2);
+
+            if (st == 1)
+              set_state(PART:"mover", "custom", 0.0);
+            else
+              set_state(PART:"mover", "default", 0.0);
+         } else if ((type == MSG_INT_SET) && (id == 1)) {
+            /* border geom / screen size / desk change direction */
+            new x, y, w, h, sw, sh, mx, my, bx, by;
+            new Float:fx, Float:fy, Float:ang, Float:len, Float:lmax, 
Float:rad;
+
+            x = getarg(2);
+            y = getarg(3);
+            w = getarg(4);
+            h = getarg(5);
+            sw = getarg(6);
+            sh = getarg(7);
+            custom_state(PART:"mover", "default", 0.0);
+
+            mx = sw/2;
+            my = sh/2;
+
+            bx = x+(w/2)-mx;
+            by = y+(h/2)-my;
+            if (bx == 0) bx = 1;
+            if (by == 0) by = 1;
+            fx = bx/(w/2);
+            fy = by/(h/2);
+            ang = atan(fy/fx);
+            if (fx < 0.0)
+              ang = PI+ang;
+            len = sqrt((bx*bx)+(by*by));
+            lmax = sqrt(((sw/2)*(sw/2))+((sh/2)*(sh/2)));
+            rad = sqrt((w*w)+(h*h))/2.0;
+            x = round(cos(ang)*(lmax-len+rad));
+            y = round(sin(ang)*(lmax-len+rad));
+            set_state_val(PART:"mover", STATE_REL1_OFFSET, x, y);
+            set_state_val(PART:"mover", STATE_REL2_OFFSET, x, y);
+         }
+      }
+   }
+}
+
 group { name: "e/comp/effects/zoom";
-   inherit: "e/comp/effects/linear";
+   inherit: "e/comp/effects/diagonal";
    script {
       public message(Msg_Type:type, id, ...) {
          if ((type == MSG_INT_SET) && (id == 0)) {
@@ -345,12 +475,35 @@ group { name: "e/comp/effects/zoom";
               set_state(PART:"clip", "default", 0.0);
             }
          } else if ((type == MSG_INT_SET) && (id == 1)) {
-            /* start/end point */
-            new x, y;
+            /* border geom / screen size / desk change direction */
+            new x, y, w, h, sw, sh, mx, my, bx, by;
+            new Float:fx, Float:fy, Float:ang, Float:len, Float:lmax, 
Float:rad;
 
             x = getarg(2);
             y = getarg(3);
+            w = getarg(4);
+            h = getarg(5);
+            sw = getarg(6);
+            sh = getarg(7);
             custom_state(PART:"mover", "default", 0.0);
+
+            mx = sw/2;
+            my = sh/2;
+
+            bx = x+(w/2)-mx;
+            by = y+(h/2)-my;
+            if (bx == 0) bx = 1;
+            if (by == 0) by = 1;
+            fx = bx/(w/2);
+            fy = by/(h/2);
+            ang = atan(fy/fx);
+            if (fx < 0.0)
+              ang = PI+ang;
+            len = sqrt((bx*bx)+(by*by));
+            lmax = sqrt(((sw/2)*(sw/2))+((sh/2)*(sh/2)));
+            rad = sqrt((w*w)+(h*h))/2.0;
+            x = round(cos(ang)*(lmax-len+rad));
+            y = round(sin(ang)*(lmax-len+rad));
             set_state_val(PART:"mover", STATE_REL1_OFFSET, x, y);
             set_state_val(PART:"mover", STATE_REL2_OFFSET, x, y);
          }
diff --git a/data/themes/edc/illume.edc b/data/themes/edc/illume.edc
index 7f55025..54d8818 100644
--- a/data/themes/edc/illume.edc
+++ b/data/themes/edc/illume.edc
@@ -636,6 +636,7 @@ group { name: "modules/illume-softkey/window";
             rel2.to_x: "dots_start";
             rel2.relative: 1.0 1.0;
             align: 0.0 0.5;
+            fixed: 0 1;
             box { layout: "horizontal";
                padding: 4 0;
                align: 0.0 0.5;
@@ -652,6 +653,7 @@ group { name: "modules/illume-softkey/window";
             rel2.to_x: "dots_end";
             rel2.relative: 0.0 1.0;
             align: 1.0 0.5;
+            fixed: 0 1;
             box { layout: "horizontal";
                padding: 4 0;
                align: 1.0 0.5;
diff --git a/src/bin/e_config.c b/src/bin/e_config.c
index 53d46ff..3249bdf 100644
--- a/src/bin/e_config.c
+++ b/src/bin/e_config.c
@@ -1212,8 +1212,10 @@ e_config_load(void)
              switch (e_config->desk_flip_animate_mode)
                {
                 case 1: //pane
-                case 2: //zoom
-                  e_config->desk_flip_animate_type = 
eina_stringshare_add("linear");
+                  e_config->desk_flip_animate_type = 
eina_stringshare_add("pane");
+                  break;
+                case 2: //zoom, now known as diagonal
+                  e_config->desk_flip_animate_type = 
eina_stringshare_add("diagonal");
                   break;
                 default:
                   break;
diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c
index 1f19899..7aa6897 100644
--- a/src/bin/e_desk.c
+++ b/src/bin/e_desk.c
@@ -733,6 +733,20 @@ _e_desk_event_desk_window_profile_change_free(void *data 
__UNUSED__, void *event
 
 #endif
 
+static Eina_Bool
+_e_desk_transition_setup(E_Border *bd, int dx, int dy, int state)
+{
+   e_comp_win_effect_set(bd->cw, e_config->desk_flip_animate_type);
+   if (e_config->desk_flip_animate_type)
+     {
+        /* set geoms */
+        e_comp_win_effect_params_set(bd->cw, 1, (int[]){bd->x, bd->y, bd->w, 
bd->h, bd->zone->w, bd->zone->h, dx, dy}, 8);
+        e_comp_win_effect_params_set(bd->cw, 0, (int[]){state}, 1);
+     }
+
+   return !!e_config->desk_flip_animate_type;
+}
+
 static void
 _e_desk_show_end(void *data, Evas_Object *obj EINA_UNUSED, const char 
*emission EINA_UNUSED, const char *source EINA_UNUSED)
 {
@@ -784,7 +798,6 @@ _e_desk_show_begin(E_Desk *desk, int dx, int dy)
 {
    E_Border_List *bl;
    E_Border *bd;
-   int x, y;
 
    if (dx < 0) dx = -1;
    if (dx > 0) dx = 1;
@@ -804,51 +817,12 @@ _e_desk_show_begin(E_Desk *desk, int dx, int dy)
           }
         if ((bd->desk != desk) || (bd->sticky)) continue;
         e_border_tmp_input_hidden_push(bd);
-        if (e_config->desk_flip_animate_mode == 1)
-          {
-             /* set start point */
-             x = bd->zone->w * (dx * 1.5);
-             y = bd->zone->h * (dy * 1.5);
-          }
-        else if (e_config->desk_flip_animate_mode == 2)
+        if (_e_desk_transition_setup(bd, dx, dy, 1))
           {
-             int mx, my, bx, by;
-             double fx, fy, ang, rad, len, lmax;
-
-             mx = (bd->zone->w / 2);
-             my = (bd->zone->h / 2);
-
-             bx = bd->x + (bd->w / 2) - mx;
-             by = bd->y + (bd->h / 2) - my;
-             if (bx == 0) bx = 1;
-             if (by == 0) by = 1;
-             fx = (double)bx / (double)(bd->zone->w / 2);
-             fy = (double)by / (double)(bd->zone->h / 2);
-             ang = atan(fy / fx);
-             if (fx < 0.0)
-               ang = M_PI + ang;
-             len = sqrt((bx * bx) + (by * by));
-             lmax = sqrt(((bd->zone->w / 2) * (bd->zone->w / 2)) +
-                         ((bd->zone->h / 2) * (bd->zone->h / 2)));
-             rad = sqrt((bd->w * bd->w) + (bd->h * bd->h)) / 2.0;
-             x = cos(ang) * (lmax - len + rad);
-             y = sin(ang) * (lmax - len + rad);
-             INF("SHOW %d,%d: %d,%d", bd->x, bd->y, x, y);
-          }
-        if (e_config->desk_flip_animate_mode && 
e_config->desk_flip_animate_type)
-          {
-             //e_comp_win_effect_set(bd->cw, e_config->desk_flip_animate_type);
-             e_comp_win_effect_set(bd->cw, "zoom");
-             /* set start coords */
-             e_comp_win_effect_params_set(bd->cw, 1, (int[]){x, y}, 2);
-             /* tell it to start at custom state */
-             e_comp_win_effect_params_set(bd->cw, 0, (int[]){1}, 1);
              e_comp_win_effect_stop(bd->cw, _e_desk_hide_end);
              e_comp_win_effect_start(bd->cw, _e_desk_show_end, bd);
              desk->animate_count++;
           }
-        else
-          e_comp_win_effect_set(bd->cw, "none");
         e_border_comp_hidden_set(bd, EINA_TRUE);
         e_border_show(bd);
      }
@@ -860,7 +834,6 @@ _e_desk_hide_begin(E_Desk *desk, int dx, int dy)
 {
    E_Border_List *bl;
    E_Border *bd;
-   int x, y;
 
    if (dx < 0) dx = -1;
    if (dx > 0) dx = 1;
@@ -874,51 +847,12 @@ _e_desk_hide_begin(E_Desk *desk, int dx, int dy)
         if ((bd->desk->zone != desk->zone) || (bd->iconic)) continue;
         if (bd->moving) continue;
         if ((bd->desk != desk) || (bd->sticky)) continue;
-        if (e_config->desk_flip_animate_mode == 1)
+        if (_e_desk_transition_setup(bd, -dx, -dy, 0))
           {
-             /* set end point */
-             x = - (bd->zone->w * (dx * 1.5));
-             y = - (bd->zone->h * (dy * 1.5));
-          }
-        else if (e_config->desk_flip_animate_mode == 2)
-          {
-             int mx, my, bx, by;
-             double fx, fy, ang, rad, len, lmax;
-
-             mx = (bd->zone->w / 2);
-             my = (bd->zone->h / 2);
-
-             bx = bd->x + (bd->w / 2) - mx;
-             by = bd->y + (bd->h / 2) - my;
-             if (bx == 0) bx = 1;
-             if (by == 0) by = 1;
-             fx = (double)bx / (double)(bd->zone->w / 2);
-             fy = (double)by / (double)(bd->zone->h / 2);
-             ang = atan(fy / fx);
-             if (fx < 0.0)
-               ang = M_PI + ang;
-             len = sqrt((bx * bx) + (by * by));
-             lmax = sqrt(((bd->zone->w / 2) * (bd->zone->w / 2)) +
-                         ((bd->zone->h / 2) * (bd->zone->h / 2)));
-             rad = sqrt((bd->w * bd->w) + (bd->h * bd->h)) / 2.0;
-             x = cos(ang) * (lmax - len + rad);
-             y = sin(ang) * (lmax - len + rad);
-             INF("HIDE %d,%d: %d,%d", bd->x, bd->y, x, y);
-          }
-        if (e_config->desk_flip_animate_mode && 
e_config->desk_flip_animate_type)
-          {
-             //e_comp_win_effect_set(bd->cw, e_config->desk_flip_animate_type);
-             e_comp_win_effect_set(bd->cw, "zoom");
-             /* set end coords */
-             e_comp_win_effect_params_set(bd->cw, 1, (int[]){x, y}, 2);
-             /* set default state */
-             e_comp_win_effect_params_set(bd->cw, 0, (int[]){0}, 1);
              e_comp_win_effect_stop(bd->cw, _e_desk_show_end);
              e_comp_win_effect_start(bd->cw, _e_desk_hide_end, bd);
              desk->animate_count++;
           }
-        else
-          e_comp_win_effect_set(bd->cw, "none");
         e_border_comp_hidden_set(bd, EINA_TRUE);
      }
    e_container_border_list_free(bl);
diff --git a/src/modules/everything/evry_gadget.c 
b/src/modules/everything/evry_gadget.c
index 267725b..5ff75ca 100644
--- a/src/modules/everything/evry_gadget.c
+++ b/src/modules/everything/evry_gadget.c
@@ -17,13 +17,13 @@ struct _Instance
 
    int              mouse_down;
 
-   Ecore_Animator  *hide_animator;
    double           hide_start;
    int              hide_x, hide_y;
 
    Eina_List       *handlers;
 
    Eina_Bool        hidden;
+   Eina_Bool        animating;
    Eina_Bool        illume_mode;
 };
 
@@ -217,7 +217,6 @@ _del_func(void *data, void *obj __UNUSED__)
 
    e_gadcon_locked_set(inst->gcc->gadcon, 0);
 
-   if (inst->hide_animator) ecore_animator_del(inst->hide_animator);
    inst->del_fn = NULL;
    inst->win = NULL;
    edje_object_signal_emit(inst->o_button, "e,state,unfocused", "e");
@@ -229,41 +228,18 @@ _cb_menu_configure(void *data, E_Menu *m __UNUSED__, 
E_Menu_Item *mi __UNUSED__)
    _conf_dialog(data);
 }
 
-static Eina_Bool
-_hide_animator(void *data)
+static void
+_hide_done(void *data, Evas_Object *obj EINA_UNUSED, const char *s 
EINA_UNUSED, const char *ss EINA_UNUSED)
 {
    Instance *inst = data;
-   E_Win *ewin = inst->win->ewin;
-   double val;
-   int finished = 0;
-
-   if (!inst->hide_start)
-     inst->hide_start = ecore_loop_time_get();
 
-   val = (ecore_loop_time_get() - inst->hide_start) / 0.4;
-   if (val > 0.99) finished = 1;
+   /* go bac to subject selector */
+   evry_selectors_switch(inst->win, -1, 0);
+   evry_selectors_switch(inst->win, -1, 0);
 
-   val = ecore_animator_pos_map(val, ECORE_POS_MAP_DECELERATE, 0.0, 0.0);
-
-#warning FIXME
-/*
-   e_border_fx_offset(ewin->border,
-                      (val * (inst->hide_x * ewin->w)),
-                      (val * (inst->hide_y * ewin->h)));
-*/
-   if (finished)
-     {
-        /* go bac to subject selector */
-        evry_selectors_switch(inst->win, -1, 0);
-        evry_selectors_switch(inst->win, -1, 0);
-
-        inst->hide_animator = NULL;
-        e_border_iconify(ewin->border);
-        //e_border_fx_offset(ewin->border, 0, 0);
-        return EINA_FALSE;
-     }
-
-   return EINA_TRUE;
+   e_border_iconify(inst->win->ewin->border);
+   e_comp_win_effect_set(inst->win->ewin->border->cw, "none");
+   inst->animating = 0;
 }
 
 static void
@@ -271,9 +247,16 @@ _evry_hide_func(Evry_Window *win, int finished __UNUSED__)
 {
    Instance *inst = win->data;
 
-   inst->hide_start = 0;
-   inst->hide_animator = ecore_animator_add(_hide_animator, inst);
-   inst->hidden = EINA_TRUE;
+   e_comp_win_effect_set(inst->win->ewin->border->cw, "pane");
+   /* set geoms */
+   e_comp_win_effect_params_set(inst->win->ewin->border->cw, 1,
+     (int[]){inst->win->ewin->x, inst->win->ewin->y,
+             inst->win->ewin->w, inst->win->ewin->h,
+             inst->win->ewin->border->zone->w, 
inst->win->ewin->border->zone->h,
+             inst->hide_x, inst->hide_y}, 8);
+   e_comp_win_effect_params_set(inst->win->ewin->border->cw, 0, (int[]){0}, 1);
+   e_comp_win_effect_start(inst->win->ewin->border->cw, _hide_done, inst);
+   inst->hidden = inst->animating = EINA_TRUE;
 }
 
 static Eina_Bool
@@ -290,9 +273,6 @@ _cb_focus_out(void *data, int type __UNUSED__, void *event)
    if ((!inst) || (!inst->win))
      return ECORE_CALLBACK_PASS_ON;
 
-   if (inst->hide_animator)
-     return ECORE_CALLBACK_PASS_ON;
-
    if (inst->win->ewin->border != ev->border)
      return ECORE_CALLBACK_PASS_ON;
 
@@ -461,15 +441,11 @@ _button_cb_mouse_down(void *data, Evas *e __UNUSED__, 
Evas_Object *obj __UNUSED_
              win = inst->win;
              bd = win->ewin->border;
 
-             if (inst->hide_animator)
-               {
-                  ecore_animator_del(inst->hide_animator);
-                  inst->hide_animator = NULL;
-               }
-
              if (inst->hidden || !bd->focused)
                {
-                  //e_border_fx_offset(bd, 0, 0);
+                  if (inst->animating)
+                    e_comp_win_effect_stop(bd->cw, NULL);
+                  e_comp_win_effect_set(bd->cw, "none");
                   e_border_uniconify(bd);
                   e_border_raise(bd);
                   e_border_focus_set(bd, 1, 1);
diff --git a/src/modules/illume-home/e_busycover.c 
b/src/modules/illume-home/e_busycover.c
index 4582576..bd9035c 100644
--- a/src/modules/illume-home/e_busycover.c
+++ b/src/modules/illume-home/e_busycover.c
@@ -24,7 +24,7 @@ e_busycover_new(E_Win *win)
    edje_object_part_text_set(cover->o_base, "e.text.title", _("LOADING"));
    evas_object_move(cover->o_base, win->x, win->y);
    evas_object_resize(cover->o_base, win->w, win->h);
-   evas_object_layer_set(cover->o_base, 999);  //FIXME: COMP
+   evas_object_layer_set(cover->o_base, 999);
    return cover;
 }
 
diff --git a/src/modules/illume-home/e_mod_main.c 
b/src/modules/illume-home/e_mod_main.c
index c5468df..f5f24d9 100644
--- a/src/modules/illume-home/e_mod_main.c
+++ b/src/modules/illume-home/e_mod_main.c
@@ -594,7 +594,7 @@ _il_home_cb_border_add(void *data __UNUSED__, int type 
__UNUSED__, void *event)
              exe->border->x = exe->zone->x;
              exe->border->y = exe->zone->y;
              exe->border->changes.pos = 1;
-             exe->border->changed = 1;
+             BD_CHANGED(exe->border);
           }
         if (exe->handle) 
           {
diff --git a/src/modules/illume-indicator/e_mod_ind_win.c 
b/src/modules/illume-indicator/e_mod_ind_win.c
index 2f0ef88..c46c724 100644
--- a/src/modules/illume-indicator/e_mod_ind_win.c
+++ b/src/modules/illume-indicator/e_mod_ind_win.c
@@ -419,7 +419,7 @@ _e_mod_ind_win_cb_mouse_move(void *data, Evas *evas 
__UNUSED__, Evas_Object *obj
           {
              bd->y = ny;
              bd->changes.pos = 1;
-             bd->changed = 1;
+             BD_CHANGED(bd);
              e_win_move(iwin->win, iwin->win->x, ny);
           }
      }
diff --git a/src/modules/illume-softkey/e_mod_sft_win.c 
b/src/modules/illume-softkey/e_mod_sft_win.c
index 6920fcb..04de4f7 100644
--- a/src/modules/illume-softkey/e_mod_sft_win.c
+++ b/src/modules/illume-softkey/e_mod_sft_win.c
@@ -87,7 +87,9 @@ e_mod_sft_win_new(E_Zone *zone)
    _e_mod_sft_win_create_extra_buttons(swin);
 
    edje_object_size_min_calc(swin->o_base, &mw, &mh);
-   
+   e_util_size_debug_set(swin->o_base, 1);
+
+   mh = E_CLAMP(mh, 10, zone->h / 3);   
    /* set minimum size of this window */
    e_win_size_min_set(swin->win, zone->w, mh);
 
diff --git a/src/modules/illume2/e_mod_kbd.c b/src/modules/illume2/e_mod_kbd.c
index 8791f45..971bb68 100644
--- a/src/modules/illume2/e_mod_kbd.c
+++ b/src/modules/illume2/e_mod_kbd.c
@@ -154,7 +154,10 @@ e_mod_kbd_show(void)
         /* show the border */
         if (_e_illume_kbd->border) 
           {
-             e_border_fx_offset(_e_illume_kbd->border, 0, 0);
+             e_comp_win_effect_set(_e_illume_kbd->border->cw, "move");
+             /* unuse location */
+             e_comp_win_effect_params_set(_e_illume_kbd->border->cw, 0, 
(int[]){0}, 1);
+             e_comp_win_effect_start(_e_illume_kbd->border->cw, NULL, NULL);
              if (!_e_illume_kbd->border->visible) 
                e_border_show(_e_illume_kbd->border);
              e_border_raise(_e_illume_kbd->border);
@@ -322,12 +325,12 @@ _e_mod_kbd_cb_border_focus_out(void *data __UNUSED__, int 
type __UNUSED__, void
    e_mod_kbd_hide();
 
    /* tell the focused border it changed so layout gets udpated */
-   if (_prev_focused_border) 
+   if (_prev_focused_border && 
(!e_object_is_del(E_OBJECT(_prev_focused_border)))) 
      {
         if (!e_illume_border_is_conformant(_prev_focused_border)) 
           {
              _prev_focused_border->changes.size = 1;
-             _prev_focused_border->changed = 1;
+             BD_CHANGED(_prev_focused_border);
           }
      }
 
@@ -461,8 +464,12 @@ _e_mod_kbd_hide(void)
      {
         if (_e_illume_kbd->border) 
           {
-             e_border_fx_offset(_e_illume_kbd->border, 0, 
-                                _e_illume_kbd->border->h);
+             e_comp_win_effect_set(_e_illume_kbd->border->cw, "move");
+             /* set location */
+             e_comp_win_effect_params_set(_e_illume_kbd->border->cw, 1, 
(int[]){0, _e_illume_kbd->border->h}, 2);
+             /* use location */
+             e_comp_win_effect_params_set(_e_illume_kbd->border->cw, 0, 
(int[]){1}, 1);
+             e_comp_win_effect_start(_e_illume_kbd->border->cw, NULL, NULL);
              e_border_hide(_e_illume_kbd->border, 2);
           }
      }
@@ -511,9 +518,16 @@ _e_mod_kbd_cb_animate(void *data __UNUSED__)
    _e_illume_kbd->adjust = ((_e_illume_kbd->adjust_end * v) + 
                             (_e_illume_kbd->adjust_start * (1.0 - v)));
 
-   if (_e_illume_kbd->border) 
-     e_border_fx_offset(_e_illume_kbd->border, 0, 
-                        (_e_illume_kbd->border->h - _e_illume_kbd->adjust));
+   if (_e_illume_kbd->border && _e_illume_kbd->border->cw)
+     {
+        e_comp_win_effect_set(_e_illume_kbd->border->cw, "move");
+        /* set location */
+        e_comp_win_effect_params_set(_e_illume_kbd->border->cw, 1,
+          (int[]){0, _e_illume_kbd->border->h - _e_illume_kbd->adjust}, 2);
+        /* use location */
+        e_comp_win_effect_params_set(_e_illume_kbd->border->cw, 0, (int[]){1}, 
1);
+        e_comp_win_effect_start(_e_illume_kbd->border->cw, NULL, NULL);
+     }
 
    if (t == _e_illume_kbd->len) 
      {
@@ -563,7 +577,12 @@ _e_mod_kbd_border_adopt(E_Border *bd)
 
    if (!_e_illume_kbd->visible) 
      {
-        e_border_fx_offset(bd, 0, bd->h);
+        e_comp_win_effect_set(bd->cw, "move");
+        /* set location */
+        e_comp_win_effect_params_set(bd->cw, 1, (int[]){0, bd->h}, 2);
+        /* use location */
+        e_comp_win_effect_params_set(bd->cw, 0, (int[]){1}, 1);
+        e_comp_win_effect_start(bd->cw, NULL, NULL);
         _e_mod_kbd_layout_send();
      }
 }
@@ -656,7 +675,7 @@ _e_mod_kbd_changes_send(void)
              if (!e_illume_border_is_conformant(_prev_focused_border)) 
                {
                   _prev_focused_border->changes.size = 1;
-                  _prev_focused_border->changed = 1;
+                  BD_CHANGED(_prev_focused_border);
                }
           }
      }
@@ -669,7 +688,7 @@ _e_mod_kbd_changes_send(void)
         if (!e_illume_border_is_conformant(_focused_border)) 
           {
              _focused_border->changes.size = 1;
-             _focused_border->changed = 1;
+             BD_CHANGED(_focused_border);
           }
      }
 }
diff --git a/src/modules/illume2/e_mod_quickpanel.c 
b/src/modules/illume2/e_mod_quickpanel.c
index 0458eab..6f129c4 100644
--- a/src/modules/illume2/e_mod_quickpanel.c
+++ b/src/modules/illume2/e_mod_quickpanel.c
@@ -135,16 +135,15 @@ e_mod_quickpanel_show(E_Illume_Quickpanel *qp)
         EINA_LIST_FOREACH(qp->borders, l, bd) 
           {
              if (!bd->visible) e_illume_border_show(bd);
-             if (qp->vert.dir == 0) 
-               {
-                  e_border_fx_offset(bd, 0, ny);
-                  ny += bd->h;
-               }
-             else 
-               {
-                  ny -= bd->h;
-                  e_border_fx_offset(bd, 0, ny);
-               }
+             
+             if (qp->vert.dir) ny -= bd->h;
+             e_comp_win_effect_set(bd->cw, "move");
+             /* set location */
+             e_comp_win_effect_params_set(bd->cw, 1, (int[]){0, ny}, 2);
+             /* use location */
+             e_comp_win_effect_params_set(bd->cw, 0, (int[]){1}, 1);
+             e_comp_win_effect_start(bd->cw, NULL, NULL);
+             if (qp->vert.dir == 0) ny += bd->h;
           }
         qp->visible = 1;
         _e_mod_quickpanel_clickwin_show(qp);
@@ -458,7 +457,10 @@ _e_mod_quickpanel_hide(E_Illume_Quickpanel *qp)
         /* if we are not animating, hide the qp borders */
         EINA_LIST_REVERSE_FOREACH(qp->borders, l, bd) 
           {
-             e_border_fx_offset(bd, 0, 0);
+             e_comp_win_effect_set(bd->cw, "move");
+             /* unuse location */
+             e_comp_win_effect_params_set(bd->cw, 0, (int[]){0}, 1);
+             e_comp_win_effect_start(bd->cw, NULL, NULL);
              if (bd->visible) e_illume_border_hide(bd);
           }
         qp->visible = 0;
@@ -543,20 +545,25 @@ _e_mod_quickpanel_animate_down(E_Illume_Quickpanel *qp)
      {
         /* don't adjust borders that are being deleted */
         if (e_object_is_del(E_OBJECT(bd))) continue;
-        if (bd->fx.y != (qp->vert.adjust + pbh)) 
-          e_border_fx_offset(bd, 0, (qp->vert.adjust + pbh));
+        e_comp_win_effect_set(bd->cw, "move");
+        /* set location */
+        e_comp_win_effect_params_set(bd->cw, 1,
+          (int[]){0, qp->vert.adjust + pbh}, 2);
+        /* use location */
+        e_comp_win_effect_params_set(bd->cw, 0, (int[]){1}, 1);
+        e_comp_win_effect_start(bd->cw, NULL, NULL);
         pbh += bd->h;
 
         if (!qp->visible) 
           {
-             if (bd->fx.y > 0) 
+             if (qp->vert.adjust + pbh > 0) 
                {
                   if (!bd->visible) e_illume_border_show(bd);
                }
           }
         else 
           {
-             if (bd->fx.y <= 10) 
+             if (qp->vert.adjust + pbh <= 10) 
                {
                   if (bd->visible) e_illume_border_hide(bd);
                }
@@ -578,19 +585,24 @@ _e_mod_quickpanel_animate_up(E_Illume_Quickpanel *qp)
         /* don't adjust borders that are being deleted */
         if (e_object_is_del(E_OBJECT(bd))) continue;
         pbh -= bd->h;
-        if (bd->fx.y != (qp->vert.adjust + pbh)) 
-          e_border_fx_offset(bd, 0, (qp->vert.adjust + pbh));
+        e_comp_win_effect_set(bd->cw, "move");
+        /* set location */
+        e_comp_win_effect_params_set(bd->cw, 1,
+          (int[]){0, qp->vert.adjust + pbh}, 2);
+        /* use location */
+        e_comp_win_effect_params_set(bd->cw, 0, (int[]){1}, 1);
+        e_comp_win_effect_start(bd->cw, NULL, NULL);
 
         if (!qp->visible) 
           {
-             if (bd->fx.y < 0) 
+             if (qp->vert.adjust + pbh < 0) 
                {
                   if (!bd->visible) e_illume_border_show(bd);
                }
           }
         else 
           {
-             if (bd->fx.y >= -10) 
+             if (qp->vert.adjust + pbh >= -10) 
                {
                   if (bd->visible) e_illume_border_hide(bd);
                }
diff --git a/src/modules/illume2/policies/illume/policy.c 
b/src/modules/illume2/policies/illume/policy.c
index f3d4a68..5e619a2 100644
--- a/src/modules/illume2/policies/illume/policy.c
+++ b/src/modules/illume2/policies/illume/policy.c
@@ -107,7 +107,7 @@ _policy_border_move(E_Border *bd, int x, int y)
    bd->x = x;
    bd->y = y;
    bd->changes.pos = 1;
-   bd->changed = 1;
+   BD_CHANGED(bd);
 }
 
 static void 
@@ -120,7 +120,7 @@ _policy_border_resize(E_Border *bd, int w, int h)
    bd->client.w = (bd->w - (bd->client_inset.l + bd->client_inset.r));
    bd->client.h = (bd->h - (bd->client_inset.t + bd->client_inset.b));
    bd->changes.size = 1;
-   bd->changed = 1;
+   BD_CHANGED(bd);
 }
 
 static void 
@@ -305,12 +305,13 @@ _policy_zone_layout_update(E_Zone *zone)
         if (bd->zone != zone) continue;
 
         /* skip special windows */
+        if (e_object_is_del(E_OBJECT(bd))) continue;
         if (e_illume_border_is_keyboard(bd)) continue;
         if (e_illume_border_is_quickpanel(bd)) continue;
 
         /* signal a changed pos here so layout gets updated */
         bd->changes.pos = 1;
-        bd->changed = 1;
+        BD_CHANGED(bd);
      }
 }
 
@@ -1513,7 +1514,7 @@ _policy_zone_move_resize(E_Zone *zone)
 
         /* signal a changed pos here so layout gets updated */
         bd->changes.pos = 1;
-        bd->changed = 1;
+        BD_CHANGED(bd);
      }
 }
 
@@ -1882,7 +1883,9 @@ _policy_property_change(Ecore_X_Event_Window_Property 
*event)
 
         /* adjust for keyboard visibility because keyboard uses fx_offset */
         y = 0;
-        if (kbd->border->fx.y <= 0) y = kbd->border->y;
+        if (kbd->border->cw &&
+          
(!e_util_strcmp(edje_object_part_state_get(kbd->border->cw->effect_obj, 
"mover", NULL), "custom")))
+          y = kbd->border->y;
 
         /* look for conformant borders */
         EINA_LIST_FOREACH(e_border_client_list(), l, bd) 
diff --git a/src/modules/illume2/policies/tablet/policy.c 
b/src/modules/illume2/policies/tablet/policy.c
index 7a68240..935c540 100644
--- a/src/modules/illume2/policies/tablet/policy.c
+++ b/src/modules/illume2/policies/tablet/policy.c
@@ -89,7 +89,7 @@ _policy_border_move(E_Border *bd, int x, int y)
    bd->x = x;
    bd->y = y;
    bd->changes.pos = 1;
-   bd->changed = 1;
+   BD_CHANGED(bd);
 }
 
 static void
@@ -102,7 +102,7 @@ _policy_border_resize(E_Border *bd, int w, int h)
    bd->client.w = (bd->w - (bd->client_inset.l + bd->client_inset.r));
    bd->client.h = (bd->h - (bd->client_inset.t + bd->client_inset.b));
    bd->changes.size = 1;
-   bd->changed = 1;
+   BD_CHANGED(bd);
 }
 
 static void
@@ -259,12 +259,13 @@ _policy_zone_layout_update(E_Zone *zone)
        if (bd->zone != zone) continue;
 
        /* skip special windows */
+ if (e_object_is_del(E_OBJECT(bd))) continue;
        if (e_illume_border_is_keyboard(bd)) continue;
        if (e_illume_border_is_quickpanel(bd)) continue;
 
        /* signal a changed pos here so layout gets updated */
        bd->changes.pos = 1;
-       bd->changed = 1;
+       BD_CHANGED(bd);
      }
 }
 
@@ -1165,7 +1166,7 @@ _policy_zone_move_resize(E_Zone *zone)
        if (bd->zone != zone) continue;
 
        bd->changes.pos = 1;
-       bd->changed = 1;
+       BD_CHANGED(bd);
      }
 }
 
@@ -1497,7 +1498,9 @@ _policy_property_change(Ecore_X_Event_Window_Property 
*event)
 
        /* adjust Y for keyboard visibility because keyboard uses fx_offset */
        y = 0;
-       if (kbd->border->fx.y <= 0) y = kbd->border->y;
+        if (kbd->border->cw &&
+          
(!e_util_strcmp(edje_object_part_state_get(kbd->border->cw->effect_obj, 
"mover", NULL), "custom")))
+          y = kbd->border->y;
 
        /* look for conformant borders */
        EINA_LIST_FOREACH(e_border_client_list(), l, bd)

-- 

------------------------------------------------------------------------------
Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester  
Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the  
endpoint security space. For insight on selecting the right partner to 
tackle endpoint security challenges, access the full report. 
http://p.sf.net/sfu/symantec-dev2dev

Reply via email to