Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        arrange.c draw.c ewin-ops.c ewins.c ewins.h menus.c 
        moveresize.c 


Log Message:
Fix window sliding in new boxed mode.

===================================================================
RCS file: /cvs/e/e16/e/src/arrange.c,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -3 -r1.98 -r1.99
--- arrange.c   17 Jan 2007 01:10:42 -0000      1.98
+++ arrange.c   16 Jun 2007 08:41:53 -0000      1.99
@@ -1008,7 +1008,8 @@
 
        if (Conf.place.cleanupslide)
           SlideEwinTo(ewin, EoGetX(ewin), EoGetY(ewin),
-                      ret[i].x, ret[i].y, Conf.place.slidespeedcleanup);
+                      ret[i].x, ret[i].y, Conf.place.slidespeedcleanup,
+                      Conf.place.slidemode);
        else
           EwinMove(ewin, ret[i].x, ret[i].y);
      }
===================================================================
RCS file: /cvs/e/e16/e/src/draw.c,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -3 -r1.100 -r1.101
--- draw.c      15 Jun 2007 19:42:41 -0000      1.100
+++ draw.c      16 Jun 2007 08:41:53 -0000      1.101
@@ -799,12 +799,10 @@
          {
             static EObj        *shape_win = NULL;
 
+            if (firstlast == 0 && !shape_win)
+               shape_win = _ShapeCreateWin();
             if (!shape_win)
-              {
-                 shape_win = _ShapeCreateWin();
-                 if (!shape_win)
-                    return;
-              }
+               return;
 
             _ShapeSetBox(shape_win, x, y, w, h, bl, br, bt, bb, seqno);
             EobjMap(shape_win, 0);
===================================================================
RCS file: /cvs/e/e16/e/src/ewin-ops.c,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -3 -r1.119 -r1.120
--- ewin-ops.c  11 Jun 2007 22:28:35 -0000      1.119
+++ ewin-ops.c  16 Jun 2007 08:41:53 -0000      1.120
@@ -119,132 +119,6 @@
 }
 
 void
-SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, int speed)
-{
-   int                 k, x, y, tmpx, tmpy;
-   char                firstlast;
-
-   firstlast = 0;
-   Mode.place.doing_slide = 1;
-   FocusEnable(0);
-   SoundPlay("SOUND_WINDOW_SLIDE");
-
-   if (Conf.place.slidemode > 0)
-      EGrabServer();
-
-   tmpx = abs(tx - fx) + abs(ty - fy);
-   tmpx = (tmpx > 0) ? (VRoot.w + VRoot.h) / tmpx : 100;
-   speed *= tmpx;
-
-   ETimedLoopInit(0, 1024, speed);
-   for (k = 0; k <= 1024;)
-     {
-       x = ((fx * (1024 - k)) + (tx * k)) >> 10;
-       y = ((fy * (1024 - k)) + (ty * k)) >> 10;
-       tmpx = x;
-       tmpy = y;
-       if (Conf.place.slidemode == 0)
-          EoMove(ewin, tmpx, tmpy);
-       else
-          DrawEwinShape(ewin, Conf.place.slidemode, tmpx, tmpy,
-                        ewin->client.w, ewin->client.h, firstlast, 0);
-       if (firstlast == 0)
-          firstlast = 1;
-
-       k = ETimedLoopNext();
-     }
-
-   ewin->state.animated = 0;
-   Mode.place.doing_slide = 0;
-
-   if (Conf.place.slidemode)
-      DrawEwinShape(ewin, Conf.place.slidemode, tx, ty,
-                   ewin->client.w, ewin->client.h, 2, 0);
-   EwinOpMove(ewin, OPSRC_USER, tx, ty);
-
-   FocusEnable(1);
-
-   if (Conf.place.slidemode > 0)
-      EUngrabServer();
-
-   SoundPlay("SOUND_WINDOW_SLIDE_END");
-}
-
-void
-SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx, int *ty, int num_wins,
-            int speed)
-{
-   int                 k, *x, *y, tmpx, tmpy, tmpw, tmph, i;
-   char                firstlast;
-
-   if (num_wins <= 0)
-      return;
-
-   x = EMALLOC(int, num_wins);
-   y = EMALLOC(int, num_wins);
-
-   if (!x || !y)
-      goto done;
-
-   firstlast = 0;
-   Mode.place.doing_slide = 1;
-   FocusEnable(0);
-   SoundPlay("SOUND_WINDOW_SLIDE");
-
-   if (Conf.place.slidemode > 0)
-      EGrabServer();
-
-   ETimedLoopInit(0, 1024, speed);
-   for (k = 0; k <= 1024;)
-     {
-       for (i = 0; i < num_wins; i++)
-         {
-            if (!ewin[i])
-               continue;
-
-            x[i] = ((fx[i] * (1024 - k)) + (tx[i] * k)) >> 10;
-            y[i] = ((fy[i] * (1024 - k)) + (ty[i] * k)) >> 10;
-            tmpx = x[i];
-            tmpy = y[i];
-            tmpw = ewin[i]->client.w;
-            tmph = ewin[i]->client.h;
-            if (ewin[i]->type == EWIN_TYPE_MENU)
-               EoMove(ewin[i], tmpx, tmpy);
-            else
-               DrawEwinShape(ewin[i], 0, tmpx, tmpy, tmpw, tmph, firstlast, i);
-            if (firstlast == 0)
-               firstlast = 1;
-         }
-       /* We may loop faster here than originally intended */
-       k = ETimedLoopNext();
-     }
-
-   for (i = 0; i < num_wins; i++)
-     {
-       if (ewin[i])
-         {
-            DrawEwinShape(ewin[i], 0, x[i], y[i], ewin[i]->client.w,
-                          ewin[i]->client.h, 2, i);
-            EwinMove(ewin[i], tx[i], ty[i]);
-         }
-     }
-
-   Mode.place.doing_slide = 0;
-   FocusEnable(1);
-
-   if (Conf.place.slidemode > 0)
-      EUngrabServer();
-
-   SoundPlay("SOUND_WINDOW_SLIDE_END");
-
- done:
-   if (x)
-      Efree(x);
-   if (y)
-      Efree(y);
-}
-
-void
 EwinFixPosition(EWin * ewin)
 {
    int                 x, y;
===================================================================
RCS file: /cvs/e/e16/e/src/ewins.c,v
retrieving revision 1.199
retrieving revision 1.200
diff -u -3 -r1.199 -r1.200
--- ewins.c     20 May 2007 08:08:58 -0000      1.199
+++ ewins.c     16 Jun 2007 08:41:53 -0000      1.200
@@ -1843,7 +1843,7 @@
       goto done;
 
    SlideEwinTo(ewin, EoGetX(ewin), EoGetY(ewin), ewin->req_x, ewin->req_y,
-              Conf.place.slidespeedmap);
+              Conf.place.slidespeedmap, Conf.place.slidemode);
 
  done:
    Mode.place.doing_slide = 0;
===================================================================
RCS file: /cvs/e/e16/e/src/ewins.h,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -3 -r1.75 -r1.76
--- ewins.h     11 Jun 2007 22:28:35 -0000      1.75
+++ ewins.h     16 Jun 2007 08:41:53 -0000      1.76
@@ -400,9 +400,9 @@
 
 /* ewin-ops.c */
 void                SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty,
-                               int speed);
+                               int speed, int mode);
 void                SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx,
-                                int *ty, int num_wins, int speed);
+                                int *ty, int num_wins, int speed, int mode);
 void                EwinFixPosition(EWin * ewin);
 void                EwinMove(EWin * ewin, int x, int y);
 void                EwinResize(EWin * ewin, int w, int h);
===================================================================
RCS file: /cvs/e/e16/e/src/menus.c,v
retrieving revision 1.279
retrieving revision 1.280
diff -u -3 -r1.279 -r1.280
--- menus.c     5 Jun 2007 11:41:23 -0000       1.279
+++ menus.c     16 Jun 2007 08:41:53 -0000      1.280
@@ -1475,7 +1475,7 @@
                              }
                            SlideEwinsTo(menus, fx, fy, tx, ty,
                                         Mode_menus.current_depth,
-                                        Conf.shadespeed);
+                                        Conf.shadespeed, 0);
                            if (((xdist != 0) || (ydist != 0))
                                && (Conf.menus.warp))
                               EXWarpPointer(None, xdist, ydist);
@@ -1634,7 +1634,7 @@
 
             /* Disable menu item events while sliding */
             MenusSetEvents(0);
-            SlideEwinsTo(menus, fx, fy, tx, ty, i, Conf.shading.speed);
+            SlideEwinsTo(menus, fx, fy, tx, ty, i, Conf.shading.speed, 0);
             MenusSetEvents(1);
 
             if (Conf.menus.warp)
===================================================================
RCS file: /cvs/e/e16/e/src/moveresize.c,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -3 -r1.77 -r1.78
--- moveresize.c        15 Jun 2007 19:42:41 -0000      1.77
+++ moveresize.c        16 Jun 2007 08:41:53 -0000      1.78
@@ -897,3 +897,70 @@
 
    return did_end;
 }
+
+void
+SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, int speed, int mode)
+{
+   SlideEwinsTo(&ewin, &fx, &fy, &tx, &ty, 1, speed, mode);
+}
+
+void
+SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx, int *ty, int num_wins,
+            int speed, int mode)
+{
+   int                 k, x, y, w, h, i;
+   char                firstlast;
+
+   if (num_wins <= 0)
+      return;
+
+   firstlast = 0;
+   FocusEnable(0);
+   SoundPlay("SOUND_WINDOW_SLIDE");
+
+   Mode_mr.grab_server = _NeedServerGrab(mode);
+   if (Mode_mr.grab_server)
+      EGrabServer();
+
+   ETimedLoopInit(0, 1024, speed);
+   for (k = 0; k <= 1024;)
+     {
+       for (i = 0; i < num_wins; i++)
+         {
+            if (!ewin[i])
+               continue;
+
+            x = ((fx[i] * (1024 - k)) + (tx[i] * k)) >> 10;
+            y = ((fy[i] * (1024 - k)) + (ty[i] * k)) >> 10;
+            w = ewin[i]->client.w;
+            h = ewin[i]->client.h;
+            if (mode == 0)
+               EoMove(ewin[i], x, y);
+            else
+               DrawEwinShape(ewin[i], mode, x, y, w, h, firstlast, i);
+            firstlast = 1;
+         }
+       /* We may loop faster here than originally intended */
+       k = ETimedLoopNext();
+     }
+
+   for (i = 0; i < num_wins; i++)
+     {
+       if (!ewin[i])
+          continue;
+
+       ewin[i]->state.animated = 0;
+
+       if (mode > 0)
+          DrawEwinShape(ewin[i], mode, tx[i], ty[i], ewin[i]->client.w,
+                        ewin[i]->client.h, 2, i);
+       EwinMove(ewin[i], tx[i], ty[i]);
+     }
+
+   FocusEnable(1);
+
+   if (Mode_mr.grab_server)
+      EUngrabServer();
+
+   SoundPlay("SOUND_WINDOW_SLIDE_END");
+}



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to