Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        draw.c ewins.c moveresize.c 


Log Message:
Fix moving between offset desktops.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/draw.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -3 -r1.58 -r1.59
--- draw.c      2 Mar 2005 23:23:55 -0000       1.58
+++ draw.c      4 Mar 2005 22:14:58 -0000       1.59
@@ -882,7 +882,7 @@
 {
    static GC           gc = 0;
    XGCValues           gcv;
-   int                 x1, y1, w1, h1, i, j, pw, ph;
+   int                 x1, y1, w1, h1, i, j, pw, ph, dx, dy;
    static Pixmap       b1 = 0, b2 = 0, b3 = 0;
    static Font         font = 0;
    int                 bpp;
@@ -957,14 +957,22 @@
        if (!b3)
           b3 = XCreateBitmapFromData(disp, VRoot.win, gray3_bits, gray3_width,
                                      gray3_height);
-       x1 = ewin->shape_x;
-       y1 = ewin->shape_y;
+
+       dx = DeskGetX(EoGetDesk(ewin));
+       dy = DeskGetY(EoGetDesk(ewin));
+       x1 = ewin->shape_x + dx;
+       y1 = ewin->shape_y + dy;
+
        w1 = EoGetW(ewin) - (ewin->border->border.left +
                             ewin->border->border.right);
        h1 = EoGetH(ewin) - (ewin->border->border.top +
                             ewin->border->border.bottom);
+
        ewin->shape_x = x;
        ewin->shape_y = y;
+       x += dx;
+       y += dy;
+
        if ((w != ewin->client.w) || (h != ewin->client.h))
          {
             ewin->client.w = w;
@@ -1207,7 +1215,7 @@
               }
             else if (firstlast == 1)
               {
-                 int                 dx, dy, wt, ht;
+                 int                 wt, ht;
                  int                 adx, ady;
 
                  dx = x - x1;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewins.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- ewins.c     27 Feb 2005 17:32:19 -0000      1.23
+++ ewins.c     4 Mar 2005 22:14:58 -0000       1.24
@@ -1375,6 +1375,13 @@
 
    if (EoIsFloating(ewin))
      {
+       /* Reparenting to root moves the desktop-relative coordinates */
+       dx = DeskGetX(EoGetDesk(ewin));
+       dy = DeskGetY(EoGetDesk(ewin));
+       ewin->shape_x += dx;
+       ewin->shape_y += dy;
+       ewin->req_x += dx;
+       ewin->req_y += dy;
        EoSetFloating(ewin, 2);
      }
    else
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/moveresize.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- moveresize.c        27 Feb 2005 01:11:51 -0000      1.31
+++ moveresize.c        4 Mar 2005 22:14:58 -0000       1.32
@@ -31,7 +31,7 @@
 ActionMoveStart(EWin * ewin, int grab, char constrained, int nogroup)
 {
    EWin              **gwins;
-   int                 i, num;
+   int                 i, num, dx, dy;
 
    if (!ewin || ewin->fixedpos)
       return 0;
@@ -58,10 +58,13 @@
 
    Mode.mode = MODE_MOVE_PENDING;
    Mode.constrained = constrained;
-   Mode.start_x = Mode.x;
-   Mode.start_y = Mode.y;
-   Mode.win_x = EoGetX(ewin);
-   Mode.win_y = EoGetY(ewin);
+
+   dx = DeskGetX(EoGetDesk(ewin));
+   dy = DeskGetY(EoGetDesk(ewin));
+   Mode.start_x = Mode.x + dx;
+   Mode.start_y = Mode.y + dy;
+   Mode.win_x = EoGetX(ewin) + dx;
+   Mode.win_y = EoGetY(ewin) + dy;
    Mode.win_w = ewin->client.w;
    Mode.win_h = ewin->client.h;
 
@@ -70,9 +73,6 @@
    for (i = 0; i < num; i++)
      {
        FloatEwinAt(gwins[i], EoGetX(gwins[i]), EoGetY(gwins[i]));
-       /* This shouldn't be necessary ... will figure it out some other time */
-       gwins[i]->shape_x = EoGetX(gwins[i]);
-       gwins[i]->shape_y = EoGetY(gwins[i]);
      }
    Efree(gwins);
    move_swapcoord_x = EoGetX(ewin);
@@ -514,7 +514,7 @@
        ewin1 = gwins[i];
 
        /* if its opaque move mode check to see if we have to float */
-       /* the window aboe all desktops (reparent to root) */
+       /* the window above all desktops (reparent to root) */
        if (Conf.movres.mode_move == 0)
           DetermineEwinFloat(ewin1, ndx, ndy);
 




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to