Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        ewin-ops.c ipc.c 


Log Message:
Geometry caching tweaks.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewin-ops.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- ewin-ops.c  23 Apr 2005 08:07:26 -0000      1.24
+++ ewin-ops.c  27 Apr 2005 22:03:43 -0000      1.25
@@ -228,7 +228,7 @@
 doMoveResizeEwin(EWin * ewin, int x, int y, int w, int h, int flags)
 {
    static int          call_depth = 0;
-   int                 dx = 0, dy = 0, sw, sh, x0, y0;
+   int                 dx, dy, sw, sh, x0, y0;
    char                move = 0, resize = 0;
    EWin              **lst;
    int                 i, num;
@@ -294,11 +294,15 @@
        dy = y - EoGetY(ewin);
        if ((dx != 0) || (dy != 0))
           move = 1;
-       EoSetX(ewin, x);
-       EoSetY(ewin, y);
        ewin->client.x = x + ewin->border->border.left;
        ewin->client.y = y + ewin->border->border.top;
      }
+   else
+     {
+       dx = dy = 0;
+       x = EoGetX(ewin);
+       y = EoGetY(ewin);
+     }
 
    if (flags & MR_FLAGS_RESIZE)
      {
@@ -308,16 +312,27 @@
        ewin->client.h = h;
        ICCCM_MatchSize(ewin);
 
-       if (!ewin->shaded)
+       /* Don't touch frame size while shaded */
+       if (ewin->shaded)
          {
-            EoSetW(ewin, ewin->client.w + ewin->border->border.left +
-                   ewin->border->border.right);
-            EoSetH(ewin, ewin->client.h + ewin->border->border.top +
-                   ewin->border->border.bottom);
+            w = EoGetW(ewin);
+            h = EoGetH(ewin);
+         }
+       else
+         {
+            w = ewin->client.w + ewin->border->border.left +
+               ewin->border->border.right;
+            h = ewin->client.h + ewin->border->border.top +
+               ewin->border->border.bottom;
          }
      }
+   else
+     {
+       w = EoGetW(ewin);
+       h = EoGetH(ewin);
+     }
 
-   EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin), EoGetW(ewin), EoGetH(ewin));
+   EoMoveResize(ewin, x, y, w, h);
 
    if (ewin->shaded == 0)
      {
@@ -573,6 +588,7 @@
 EwinInstantShade(EWin * ewin, int force)
 {
    XSetWindowAttributes att;
+   int                 x, y, w, h;
    int                 b, d;
    char                pq;
 
@@ -586,6 +602,12 @@
 
    pq = Mode.queue_up;
    Mode.queue_up = 0;
+
+   x = EoGetX(ewin);
+   y = EoGetY(ewin);
+   w = EoGetW(ewin);
+   h = EoGetH(ewin);
+
    switch (ewin->border->shadedir)
      {
      default:
@@ -593,44 +615,41 @@
        att.win_gravity = EastGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        EwinBorderMinShadeSize(ewin, &b, &d);
-       EoSetW(ewin, b);
+       w = b;
        break;
      case 1:
        att.win_gravity = WestGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        EwinBorderMinShadeSize(ewin, &b, &d);
-       d = EoGetX(ewin) + EoGetW(ewin) - b;
-       EoSetW(ewin, b);
        if (!Mode.wm.startup)
-          EoSetX(ewin, d);
+          x = x + w - b;
+       w = b;
        break;
      case 2:
        att.win_gravity = SouthGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        EwinBorderMinShadeSize(ewin, &b, &d);
-       b = d;
-       EoSetH(ewin, b);
+       h = d;
        break;
      case 3:
        att.win_gravity = SouthGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        EwinBorderMinShadeSize(ewin, &b, &d);
-       b = d;
-       d = EoGetY(ewin) + EoGetH(ewin) - b;
-       EoSetH(ewin, b);
        if (!Mode.wm.startup)
-          EoSetY(ewin, d);
+          y = y + h - d;
+       h = d;
        break;
      }
 
    ewin->shaded = 2;
-   EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin), EoGetW(ewin), EoGetH(ewin));
+   EoMoveResize(ewin, x, y, w, h);
    EMoveResizeWindow(ewin->win_container, -30, -30, 1, 1);
    EwinBorderCalcSizes(ewin);
    ecore_x_sync();
 
    EwinPropagateShapes(ewin);
    Mode.queue_up = pq;
+
    HintsSetWindowState(ewin);
    ModulesSignal(ESIGNAL_EWIN_CHANGE, ewin);
 }
@@ -639,54 +658,50 @@
 EwinInstantUnShade(EWin * ewin)
 {
    XSetWindowAttributes att;
-   int                 b, d;
+   int                 x, y, w, h;
    char                pq;
 
    if (GetZoomEWin() == ewin)
       return;
    if (!ewin->shaded)
       return;
+
    pq = Mode.queue_up;
    Mode.queue_up = 0;
 
+   x = EoGetX(ewin);
+   y = EoGetY(ewin);
+   w = EoGetW(ewin);
+   h = EoGetH(ewin);
+
    switch (ewin->border->shadedir)
      {
      default:
      case 0:
        att.win_gravity = EastGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
-       b = ewin->client.w + ewin->border->border.left +
+       w = ewin->client.w + ewin->border->border.left +
           ewin->border->border.right;
-       EoSetW(ewin, b);
        break;
      case 1:
        att.win_gravity = WestGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
-       b = ewin->client.w + ewin->border->border.left +
+       w = ewin->client.w + ewin->border->border.left +
           ewin->border->border.right;
-       d = EoGetX(ewin) + EoGetW(ewin) - (ewin->border->border.right +
-                                          ewin->client.w +
-                                          ewin->border->border.left);
-       EoSetW(ewin, b);
-       EoSetX(ewin, d);
+       x = x + EoGetW(ewin) - w;
        break;
      case 2:
        att.win_gravity = SouthGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
-       b = ewin->client.h + ewin->border->border.top +
+       h = ewin->client.h + ewin->border->border.top +
           ewin->border->border.bottom;
-       EoSetH(ewin, b);
        break;
      case 3:
        att.win_gravity = SouthGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
-       b = ewin->client.h + ewin->border->border.top +
+       h = ewin->client.h + ewin->border->border.top +
           ewin->border->border.bottom;
-       d = EoGetY(ewin) + EoGetH(ewin) - (ewin->border->border.bottom +
-                                          ewin->client.h +
-                                          ewin->border->border.top);
-       EoSetH(ewin, b);
-       EoSetY(ewin, d);
+       y = y + EoGetH(ewin) - h;
        break;
      }
 
@@ -695,8 +710,7 @@
    EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
 
    ewin->shaded = 0;
-   MoveResizeEwin(ewin, EoGetX(ewin), EoGetY(ewin), ewin->client.w,
-                 ewin->client.h);
+   MoveResizeEwin(ewin, x, y, ewin->client.w, ewin->client.h);
    ecore_x_sync();
 
    EwinPropagateShapes(ewin);
@@ -709,6 +723,7 @@
 EwinShade(EWin * ewin)
 {
    XSetWindowAttributes att;
+   int                 x, y, w, h;
    int                 i, j, k, speed, a, b, c, d, ww, hh;
    char                pq;
 
@@ -727,6 +742,11 @@
 
    speed = Conf.shadespeed;
 
+   x = EoGetX(ewin);
+   y = EoGetY(ewin);
+   w = EoGetW(ewin);
+   h = EoGetH(ewin);
+
 #if 0
    Eprintf("EwinShade-B\n");
    ecore_x_grab();
@@ -739,17 +759,17 @@
        att.win_gravity = EastGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        EwinBorderMinShadeSize(ewin, &b, &d);
-       a = EoGetW(ewin);
+       a = w;
        if ((Conf.animate_shading) || (ewin->type == EWIN_TYPE_MENU))
          {
             ETimedLoopInit(0, 1024, speed);
             for (k = 0; k <= 1024;)
               {
                  i = ((a * (1024 - k)) + (b * k)) >> 10;
-                 EoSetW(ewin, i);
-                 if (EoGetW(ewin) < 1)
-                    EoSetW(ewin, 1);
-                 ww = EoGetW(ewin) - ewin->border->border.left -
+                 w = i;
+                 if (w < 1)
+                    w = 1;
+                 ww = w - ewin->border->border.left -
                     ewin->border->border.right;
                  if (ww < 1)
                     ww = 1;
@@ -757,8 +777,7 @@
                  EMoveResizeWindow(ewin->win_container,
                                    ewin->border->border.left,
                                    ewin->border->border.top, ww, hh);
-                 EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin),
-                              EoGetW(ewin), EoGetH(ewin));
+                 EoMoveResize(ewin, x, y, w, h);
                  EwinBorderCalcSizes(ewin);
                  if (ewin->client.shaped)
                     EShapeCombineShape(ewin->win_container,
@@ -770,15 +789,15 @@
                  k = ETimedLoopNext();
               }
          }
-       EoSetW(ewin, b);
+       EoMoveResize(ewin, x, y, b, h);
        break;
      case 1:
        att.win_gravity = WestGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        EwinBorderMinShadeSize(ewin, &b, &d);
-       a = EoGetW(ewin);
-       c = EoGetX(ewin);
-       d = EoGetX(ewin) + EoGetW(ewin) - b;
+       a = w;
+       c = x;
+       d = x + w - b;
        if ((Conf.animate_shading) || (ewin->type == EWIN_TYPE_MENU))
          {
             ETimedLoopInit(0, 1024, speed);
@@ -786,11 +805,11 @@
               {
                  i = ((a * (1024 - k)) + (b * k)) >> 10;
                  j = ((c * (1024 - k)) + (d * k)) >> 10;
-                 EoSetW(ewin, i);
-                 EoSetX(ewin, j);
-                 if (EoGetW(ewin) < 1)
-                    EoSetW(ewin, 1);
-                 ww = EoGetW(ewin) - ewin->border->border.left -
+                 w = i;
+                 x = j;
+                 if (w < 1)
+                    w = 1;
+                 ww = w - ewin->border->border.left -
                     ewin->border->border.right;
                  if (ww < 1)
                     ww = 1;
@@ -798,8 +817,7 @@
                  EMoveResizeWindow(ewin->win_container,
                                    ewin->border->border.left,
                                    ewin->border->border.top, ww, hh);
-                 EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin),
-                              EoGetW(ewin), EoGetH(ewin));
+                 EoMoveResize(ewin, x, y, w, h);
                  EwinBorderCalcSizes(ewin);
                  if (ewin->client.shaped)
                     EShapeCombineShape(ewin->win_container,
@@ -810,14 +828,13 @@
                  k = ETimedLoopNext();
               }
          }
-       EoSetW(ewin, b);
-       EoSetX(ewin, d);
+       EoMoveResize(ewin, d, y, b, h);
        break;
      case 2:
        att.win_gravity = SouthGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
-       a = EoGetH(ewin);
        EwinBorderMinShadeSize(ewin, &b, &d);
+       a = h;
        b = d;
        if ((Conf.animate_shading) || (ewin->type == EWIN_TYPE_MENU))
          {
@@ -825,10 +842,10 @@
             for (k = 0; k <= 1024;)
               {
                  i = ((a * (1024 - k)) + (b * k)) >> 10;
-                 EoSetH(ewin, i);
-                 if (EoGetH(ewin) < 1)
-                    EoSetH(ewin, 1);
-                 hh = EoGetH(ewin) - ewin->border->border.top -
+                 h = i;
+                 if (h < 1)
+                    h = 1;
+                 hh = h - ewin->border->border.top -
                     ewin->border->border.bottom;
                  if (hh < 1)
                     hh = 1;
@@ -836,8 +853,7 @@
                  EMoveResizeWindow(ewin->win_container,
                                    ewin->border->border.left,
                                    ewin->border->border.top, ww, hh);
-                 EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin),
-                              EoGetW(ewin), EoGetH(ewin));
+                 EoMoveResize(ewin, x, y, w, h);
                  EwinBorderCalcSizes(ewin);
                  if (ewin->client.shaped)
                     EShapeCombineShape(ewin->win_container,
@@ -850,16 +866,16 @@
                  k = ETimedLoopNext();
               }
          }
-       EoSetH(ewin, b);
+       EoMoveResize(ewin, x, y, w, d);
        break;
      case 3:
        att.win_gravity = SouthGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        EwinBorderMinShadeSize(ewin, &b, &d);
-       a = EoGetH(ewin);
+       a = h;
        b = d;
-       c = EoGetY(ewin);
-       d = EoGetY(ewin) + EoGetH(ewin) - b;
+       c = y;
+       d = y + h - d;
        if ((Conf.animate_shading) || (ewin->type == EWIN_TYPE_MENU))
          {
             ETimedLoopInit(0, 1024, speed);
@@ -867,11 +883,11 @@
               {
                  i = ((a * (1024 - k)) + (b * k)) >> 10;
                  j = ((c * (1024 - k)) + (d * k)) >> 10;
-                 EoSetH(ewin, i);
-                 EoSetY(ewin, j);
-                 if (EoGetH(ewin) < 1)
-                    EoSetH(ewin, 1);
-                 hh = EoGetH(ewin) - ewin->border->border.top -
+                 h = i;
+                 y = j;
+                 if (h < 1)
+                    h = 1;
+                 hh = h - ewin->border->border.top -
                     ewin->border->border.bottom;
                  if (hh < 1)
                     hh = 1;
@@ -879,8 +895,7 @@
                  EMoveResizeWindow(ewin->win_container,
                                    ewin->border->border.left,
                                    ewin->border->border.top, ww, hh);
-                 EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin),
-                              EoGetW(ewin), EoGetH(ewin));
+                 EoMoveResize(ewin, x, y, w, h);
                  EwinBorderCalcSizes(ewin);
                  if (ewin->client.shaped)
                     EShapeCombineShape(ewin->win_container,
@@ -890,8 +905,7 @@
                  k = ETimedLoopNext();
               }
          }
-       EoSetH(ewin, b);
-       EoSetY(ewin, d);
+       EoMoveResize(ewin, x, d, w, b);
        break;
      }
 
@@ -921,6 +935,7 @@
 EwinUnShade(EWin * ewin)
 {
    XSetWindowAttributes att;
+   int                 x, y, w, h;
    int                 i, j, k, speed, a, b, c, d;
    char                pq;
 
@@ -934,6 +949,11 @@
 
    speed = Conf.shadespeed;
 
+   x = EoGetX(ewin);
+   y = EoGetY(ewin);
+   w = EoGetW(ewin);
+   h = EoGetH(ewin);
+
 #if 0
    Eprintf("EwinUnShade-B\n");
    ecore_x_grab();
@@ -963,20 +983,19 @@
             for (k = 0; k <= 1024;)
               {
                  i = ((a * (1024 - k)) + (b * k)) >> 10;
-                 EoSetW(ewin, i);
+                 w = i;
                  EMoveResizeWindow(ewin->win_container,
                                    ewin->border->border.left,
                                    ewin->border->border.top,
-                                   EoGetW(ewin) - ewin->border->border.left -
+                                   w - ewin->border->border.left -
                                    ewin->border->border.right, ewin->client.h);
-                 EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin),
-                              EoGetW(ewin), EoGetH(ewin));
+                 EoMoveResize(ewin, x, y, w, h);
                  EwinBorderCalcSizes(ewin);
                  if (ewin->client.shaped)
                     EShapeCombineShape(ewin->win_container,
                                        ShapeBounding,
                                        -(ewin->client.w -
-                                         (EoGetW(ewin) -
+                                         (w -
                                           ewin->border->border.left -
                                           ewin->border->border.right)), 0,
                                        ewin->client.win, ShapeBounding,
@@ -986,15 +1005,15 @@
                  k = ETimedLoopNext();
               }
          }
-       EoSetW(ewin, b);
+       EoMoveResize(ewin, x, y, b, h);
        break;
      case 1:
        att.win_gravity = WestGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        a = ewin->border->border.left + ewin->border->border.right;
        b = ewin->client.w + a;
-       c = EoGetX(ewin);
-       d = EoGetX(ewin) + EoGetW(ewin) - (ewin->client.w + a);
+       c = x;
+       d = x + w - (ewin->client.w + a);
        a++;
        ewin->shaded = 0;
        EMoveResizeWindow(ewin->win_container,
@@ -1012,15 +1031,14 @@
               {
                  i = ((a * (1024 - k)) + (b * k)) >> 10;
                  j = ((c * (1024 - k)) + (d * k)) >> 10;
-                 EoSetW(ewin, i);
-                 EoSetX(ewin, j);
+                 w = i;
+                 x = j;
                  EMoveResizeWindow(ewin->win_container,
                                    ewin->border->border.left,
                                    ewin->border->border.top,
-                                   EoGetW(ewin) - ewin->border->border.left -
+                                   w - ewin->border->border.left -
                                    ewin->border->border.right, ewin->client.h);
-                 EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin),
-                              EoGetW(ewin), EoGetH(ewin));
+                 EoMoveResize(ewin, x, y, w, h);
                  EwinBorderCalcSizes(ewin);
                  if (ewin->client.shaped)
                     EShapeCombineShape(ewin->win_container,
@@ -1031,8 +1049,7 @@
                  k = ETimedLoopNext();
               }
          }
-       EoSetW(ewin, b);
-       EoSetX(ewin, d);
+       EoMoveResize(ewin, d, y, b, h);
        break;
      case 2:
        att.win_gravity = SouthGravity;
@@ -1055,20 +1072,19 @@
             for (k = 0; k <= 1024;)
               {
                  i = ((a * (1024 - k)) + (b * k)) >> 10;
-                 EoSetH(ewin, i);
+                 h = i;
                  EMoveResizeWindow(ewin->win_container,
                                    ewin->border->border.left,
                                    ewin->border->border.top, ewin->client.w,
-                                   EoGetH(ewin) - ewin->border->border.top -
+                                   h - ewin->border->border.top -
                                    ewin->border->border.bottom);
-                 EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin),
-                              EoGetW(ewin), EoGetH(ewin));
+                 EoMoveResize(ewin, x, y, w, h);
                  EwinBorderCalcSizes(ewin);
                  if (ewin->client.shaped)
                     EShapeCombineShape(ewin->win_container,
                                        ShapeBounding, 0,
                                        -(ewin->client.h -
-                                         (EoGetH(ewin) -
+                                         (h -
                                           ewin->border->border.top -
                                           ewin->border->border.bottom)),
                                        ewin->client.win, ShapeBounding,
@@ -1078,15 +1094,15 @@
                  k = ETimedLoopNext();
               }
          }
-       EoSetH(ewin, b);
+       EoMoveResize(ewin, x, y, w, b);
        break;
      case 3:
        att.win_gravity = SouthGravity;
        EChangeWindowAttributes(ewin->client.win, CWWinGravity, &att);
        a = ewin->border->border.top + ewin->border->border.bottom;
        b = ewin->client.h + a;
-       c = EoGetY(ewin);
-       d = EoGetY(ewin) + EoGetH(ewin) - (ewin->client.h + a);
+       c = y;
+       d = y + h - (ewin->client.h + a);
        a++;
        ewin->shaded = 0;
        EMoveResizeWindow(ewin->win_container,
@@ -1104,15 +1120,14 @@
               {
                  i = ((a * (1024 - k)) + (b * k)) >> 10;
                  j = ((c * (1024 - k)) + (d * k)) >> 10;
-                 EoSetH(ewin, i);
-                 EoSetY(ewin, j);
+                 h = i;
+                 y = j;
                  EMoveResizeWindow(ewin->win_container,
                                    ewin->border->border.left,
                                    ewin->border->border.top, ewin->client.w,
-                                   EoGetH(ewin) - ewin->border->border.top -
+                                   h - ewin->border->border.top -
                                    ewin->border->border.bottom);
-                 EoMoveResize(ewin, EoGetX(ewin), EoGetY(ewin),
-                              EoGetW(ewin), EoGetH(ewin));
+                 EoMoveResize(ewin, x, y, w, h);
                  EwinBorderCalcSizes(ewin);
                  if (ewin->client.shaped)
                     EShapeCombineShape(ewin->win_container,
@@ -1123,8 +1138,7 @@
                  k = ETimedLoopNext();
               }
          }
-       EoSetH(ewin, b);
-       EoSetY(ewin, d);
+       EoMoveResize(ewin, x, d, w, b);
        break;
      }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.214
retrieving revision 1.215
diff -u -3 -r1.214 -r1.215
--- ipc.c       17 Apr 2005 13:58:06 -0000      1.214
+++ ipc.c       27 Apr 2005 22:03:44 -0000      1.215
@@ -625,7 +625,7 @@
        else
          {
             sscanf(params, "%*s %*s %i %i", &a, &b);
-            MoveResizeEwin(ewin, a, b, ewin->client.w, ewin->client.h);
+            MoveEwin(ewin, a, b);
          }
        break;
 
@@ -656,7 +656,7 @@
        else
          {
             sscanf(params, "%*s %*s %i %i", &a, &b);
-            MoveResizeEwin(ewin, EoGetX(ewin), EoGetY(ewin), a, b);
+            ResizeEwin(ewin, a, b);
          }
        break;
 
@@ -667,7 +667,7 @@
        sscanf(params, "%*s %*s %i %i", &a, &b);
        a += EoGetX(ewin);
        b += EoGetY(ewin);
-       MoveResizeEwin(ewin, a, b, ewin->client.w, ewin->client.h);
+       MoveEwin(ewin, a, b);
        break;
 
      case EWIN_OP_SIZE_REL:
@@ -677,7 +677,7 @@
        sscanf(params, "%*s %*s %i %i", &a, &b);
        a += ewin->client.w;
        b += ewin->client.h;
-       MoveResizeEwin(ewin, EoGetX(ewin), EoGetY(ewin), a, b);
+       ResizeEwin(ewin, a, b);
        break;
 
      case EWIN_OP_FOCUS:




-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id=105hix
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to