Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
      Tag: branch-exp
        E.h Makefile.am borders.c ewins.c 
Added Files:
      Tag: branch-exp
        ewin-ops.c 


Log Message:
Separation of basic window management and window operations.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.314.2.18
retrieving revision 1.314.2.19
diff -u -3 -r1.314.2.18 -r1.314.2.19
--- E.h 15 Aug 2004 15:49:03 -0000      1.314.2.18
+++ E.h 15 Aug 2004 16:25:32 -0000      1.314.2.19
@@ -1434,71 +1434,7 @@
                                        int apply);
 void                BorderWinpartChange(EWin * ewin, int i, int force);
 int                 BorderWinpartIndex(EWin * ewin, Window win);
-
-/* ewins.c */
-#define EWIN_CHANGE_NAME        (1<<0)
-#define EWIN_CHANGE_ICON_NAME   (1<<1)
-#define EWIN_CHANGE_ICON_PMAP   (1<<2)
-#define EWIN_CHANGE_DESKTOP     (1<<3)
-#define EWIN_CHANGE_LAYER       (1<<4)
-
-/* borders-ewins.c */
-void                EwinGetPosition(const EWin * ewin, int *px, int *py);
-void                EwinRefresh(EWin * ewin);
-void                EwinUpdateAfterMoveResize(EWin * ewin, int resize);
-void                EwinFixPosition(EWin * ewin);
-void                ResizeEwin(EWin * ewin, int w, int h);
-void                MoveEwin(EWin * ewin, int x, int y);
-void                MoveResizeEwin(EWin * ewin, int x, int y, int w, int h);
-void                FloatEwin(EWin * ewin);
-void                FloatEwinAt(EWin * ewin, int x, int y);
-void                RaiseEwin(EWin * ewin);
-void                LowerEwin(EWin * ewin);
-void                ShowEwin(EWin * ewin);
-void                HideEwin(EWin * ewin);
-void                EwinIconify(EWin * ewin);
-void                EwinDeIconify(EWin * ewin);
-void                EwinStick(EWin * ewin);
-void                EwinUnStick(EWin * ewin);
-void                EwinInstantShade(EWin * ewin, int force);
-void                EwinInstantUnShade(EWin * ewin);
-void                EwinShade(EWin * ewin);
-void                EwinUnShade(EWin * ewin);
-void                EwinSetFullscreen(EWin * ewin, int on);
-void                DetermineEwinFloat(EWin * ewin, int dx, int dy);
-EWin               *GetEwinPointerInClient(void);
-EWin               *GetEwinByCurrentPointer(void);
-EWin               *GetFocusEwin(void);
-EWin               *GetContextEwin(void);
-void                SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty,
-                               int speed);
-void                SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx,
-                                int *ty, int num_wins, int speed);
-void                EwinDetermineArea(EWin * ewin);
-void                AddToFamily(Window win);
-EWin               *AddInternalToFamily(Window win, const char *bname, int type,
-                                       void *ptr,
-                                       void (*init) (EWin * ewin, void *ptr));
 void                HonorIclass(char *s, int id);
-void                EwinWithdraw(EWin * ewin);
-void                EwinReparent(EWin * ewin, Window parent);
-void                SyncBorderToEwin(EWin * ewin);
-void                EwinEventDestroy(EWin * ewin);
-void                EwinEventMap(EWin * ewin);
-void                EwinEventVisibility(EWin * ewin, int on);
-void                EwinEventUnmap(EWin * ewin);
-void                MoveEwinToArea(EWin * ewin, int ax, int ay);
-int                 EwinGetDesk(const EWin * ewin);
-const char         *EwinGetTitle(const EWin * ewin);
-const char         *EwinGetIconName(const EWin * ewin);
-int                 EwinIsOnScreen(EWin * ewin);
-
-void                EwinChange(EWin * ewin, unsigned int flag);
-void                EwinChangesStart(EWin * ewin);
-void                EwinChangesProcess(EWin * ewin);
-
-void                EwinsEventsConfigure(int mode);
-void                EwinsSetFree(void);
 
 /* buttons.c */
 Button             *ButtonCreate(const char *name, int id, ImageClass * iclass,
@@ -1804,6 +1740,71 @@
 void                HandleChildShapeChange(XEvent * ev);
 void                HandleScreenChange(XEvent * ev);
 
+/* ewins.c */
+#define EWIN_CHANGE_NAME        (1<<0)
+#define EWIN_CHANGE_ICON_NAME   (1<<1)
+#define EWIN_CHANGE_ICON_PMAP   (1<<2)
+#define EWIN_CHANGE_DESKTOP     (1<<3)
+#define EWIN_CHANGE_LAYER       (1<<4)
+
+void                EwinGetPosition(const EWin * ewin, int *px, int *py);
+void                EwinRefresh(EWin * ewin);
+void                EwinUpdateAfterMoveResize(EWin * ewin, int resize);
+void                FloatEwin(EWin * ewin);
+void                FloatEwinAt(EWin * ewin, int x, int y);
+void                RaiseEwin(EWin * ewin);
+void                LowerEwin(EWin * ewin);
+void                ShowEwin(EWin * ewin);
+void                HideEwin(EWin * ewin);
+void                DetermineEwinFloat(EWin * ewin, int dx, int dy);
+EWin               *GetEwinPointerInClient(void);
+EWin               *GetEwinByCurrentPointer(void);
+EWin               *GetFocusEwin(void);
+EWin               *GetContextEwin(void);
+void                EwinDetermineArea(EWin * ewin);
+void                AddToFamily(Window win);
+EWin               *AddInternalToFamily(Window win, const char *bname, int type,
+                                       void *ptr,
+                                       void (*init) (EWin * ewin, void *ptr));
+void                EwinWithdraw(EWin * ewin);
+void                EwinReparent(EWin * ewin, Window parent);
+void                SyncBorderToEwin(EWin * ewin);
+void                EwinEventDestroy(EWin * ewin);
+void                EwinEventMap(EWin * ewin);
+void                EwinEventVisibility(EWin * ewin, int on);
+void                EwinEventUnmap(EWin * ewin);
+int                 EwinGetDesk(const EWin * ewin);
+const char         *EwinGetTitle(const EWin * ewin);
+const char         *EwinGetIconName(const EWin * ewin);
+int                 EwinIsOnScreen(EWin * ewin);
+
+void                EwinChange(EWin * ewin, unsigned int flag);
+void                EwinChangesStart(EWin * ewin);
+void                EwinChangesProcess(EWin * ewin);
+
+void                EwinsEventsConfigure(int mode);
+void                EwinsSetFree(void);
+
+/* ewin-ops.c */
+void                SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty,
+                               int speed);
+void                SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx,
+                                int *ty, int num_wins, int speed);
+void                EwinFixPosition(EWin * ewin);
+void                MoveEwin(EWin * ewin, int x, int y);
+void                ResizeEwin(EWin * ewin, int w, int h);
+void                MoveResizeEwin(EWin * ewin, int x, int y, int w, int h);
+void                EwinIconify(EWin * ewin);
+void                EwinDeIconify(EWin * ewin);
+void                EwinStick(EWin * ewin);
+void                EwinUnStick(EWin * ewin);
+void                EwinInstantShade(EWin * ewin, int force);
+void                EwinInstantUnShade(EWin * ewin);
+void                EwinShade(EWin * ewin);
+void                EwinUnShade(EWin * ewin);
+void                EwinSetFullscreen(EWin * ewin, int on);
+void                MoveEwinToArea(EWin * ewin, int ax, int ay);
+
 #if ENABLE_EWMH
 /* ewmh.c */
 void                EWMH_Init(Window win_wm_check);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Makefile.am,v
retrieving revision 1.43.2.7
retrieving revision 1.43.2.8
diff -u -3 -r1.43.2.7 -r1.43.2.8
--- Makefile.am 15 Aug 2004 15:00:36 -0000      1.43.2.7
+++ Makefile.am 15 Aug 2004 16:25:32 -0000      1.43.2.8
@@ -42,6 +42,7 @@
        events.c                \
        evhandlers.c            \
        ewins.c                 \
+       ewin-ops.c              \
        file.c                  \
        finders.c               \
        focus.c                 \
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v
retrieving revision 1.221.2.7
retrieving revision 1.221.2.8
diff -u -3 -r1.221.2.7 -r1.221.2.8
--- borders.c   15 Aug 2004 15:49:03 -0000      1.221.2.7
+++ borders.c   15 Aug 2004 16:25:32 -0000      1.221.2.8
@@ -1104,14 +1104,6 @@
 {
    EWinBit            *wbit = (EWinBit *) prm;
 
-#if 0
-   EWin               *ewin;
-   int                 part;
-
-   ewin = bit->ewin;
-   part = bit - ewin->bits;
-#endif
-
    switch (ev->type)
      {
 #if 0
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ewins.c,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -3 -r1.1.2.2 -r1.1.2.3
--- ewins.c     15 Aug 2004 15:49:04 -0000      1.1.2.2
+++ ewins.c     15 Aug 2004 16:25:32 -0000      1.1.2.3
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2000-2004 Carsten Haitzler, Geoff Harrison and various contributors
+ * Copyright (C) 2004 Kim Woelders
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -333,147 +334,6 @@
 }
 
 void
-SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, int speed)
-{
-   int                 k, spd, x, y, min, tmpx, tmpy, tmpw, tmph;
-   struct timeval      timev1, timev2;
-   int                 dsec, dusec;
-   double              tm;
-   char                firstlast;
-
-   EDBUG(3, "SlideEwinTo");
-   spd = 16;
-   min = 2;
-   firstlast = 0;
-   Mode.doingslide = 1;
-   SoundPlay("SOUND_WINDOW_SLIDE");
-
-   if (Conf.slidemode > 0)
-      GrabX();
-
-   for (k = 0; k <= 1024; k += spd)
-     {
-       gettimeofday(&timev1, NULL);
-       x = ((fx * (1024 - k)) + (tx * k)) >> 10;
-       y = ((fy * (1024 - k)) + (ty * k)) >> 10;
-       tmpx = x;
-       tmpy = y;
-       tmpw = ewin->client.w;
-       tmph = ewin->client.h;
-       if (Conf.slidemode == 0)
-          EMoveWindow(disp, ewin->win, tmpx, tmpy);
-       else
-          DrawEwinShape(ewin, Conf.slidemode, tmpx, tmpy, tmpw, tmph,
-                        firstlast);
-       if (firstlast == 0)
-          firstlast = 1;
-       XSync(disp, False);
-       gettimeofday(&timev2, NULL);
-       dsec = timev2.tv_sec - timev1.tv_sec;
-       dusec = timev2.tv_usec - timev1.tv_usec;
-       if (dusec < 0)
-         {
-            dsec--;
-            dusec += 1000000;
-         }
-       tm = (double)dsec + (((double)dusec) / 1000000);
-       spd = (int)((double)speed * tm);
-       if (spd < min)
-          spd = min;
-     }
-   DrawEwinShape(ewin, Conf.slidemode, x, y, ewin->client.w, ewin->client.h, 2);
-   MoveEwin(ewin, tx, ty);
-   Mode.doingslide = 0;
-   if (Conf.slidemode > 0)
-      UngrabX();
-   SoundPlay("SOUND_WINDOW_SLIDE_END");
-   EDBUG_RETURN_;
-}
-
-void
-SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx, int *ty, int num_wins,
-            int speed)
-{
-   int                 k, spd, *x = NULL, *y =
-      NULL, min, tmpx, tmpy, tmpw, tmph, i;
-   struct timeval      timev1, timev2;
-   int                 dsec, dusec;
-   double              tm;
-   char                firstlast;
-
-   EDBUG(3, "SlideEwinsTo");
-
-   if (num_wins)
-     {
-       x = Emalloc(sizeof(int) * num_wins);
-       y = Emalloc(sizeof(int) * num_wins);
-     }
-   spd = 16;
-   min = 2;
-   firstlast = 0;
-   Mode.doingslide = 1;
-   SoundPlay("SOUND_WINDOW_SLIDE");
-   if (Conf.slidemode > 0)
-      GrabX();
-   for (k = 0; k <= 1024; k += spd)
-     {
-       for (i = 0; i < num_wins; i++)
-         {
-            if (ewin[i])
-              {
-                 gettimeofday(&timev1, NULL);
-                 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]->menu)
-                    EMoveWindow(disp, ewin[i]->win, tmpx, tmpy);
-                 else
-                    DrawEwinShape(ewin[i], 0, tmpx, tmpy, tmpw, tmph,
-                                  firstlast);
-                 if (firstlast == 0)
-                    firstlast = 1;
-                 XSync(disp, False);
-                 gettimeofday(&timev2, NULL);
-                 dsec = timev2.tv_sec - timev1.tv_sec;
-                 dusec = timev2.tv_usec - timev1.tv_usec;
-                 if (dusec < 0)
-                   {
-                      dsec--;
-                      dusec += 1000000;
-                   }
-                 tm = (double)dsec + (((double)dusec) / 1000000);
-                 spd = (int)((double)speed * tm);
-                 if (spd < min)
-                    spd = min;
-              }
-         }
-     }
-
-   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);
-            MoveEwin(ewin[i], tx[i], ty[i]);
-         }
-     }
-
-   Mode.doingslide = 0;
-   if (Conf.slidemode > 0)
-      UngrabX();
-   SoundPlay("SOUND_WINDOW_SLIDE_END");
-   if (x)
-      Efree(x);
-   if (y)
-      Efree(y);
-   EDBUG_RETURN_;
-}
-
-void
 EwinDetermineArea(EWin * ewin)
 {
    int                 ax, ay;
@@ -1211,174 +1071,6 @@
    ForceUpdatePagersForDesktop(ewin->desktop);
 }
 
-void
-EwinFixPosition(EWin * ewin)
-{
-   int                 x, y;
-
-   if (!EwinIsMapped(ewin))
-      return;
-
-   x = ewin->x;
-   y = ewin->y;
-   if ((ewin->x + ewin->border->border.left + 1) > VRoot.w)
-      x = VRoot.w - ewin->border->border.left - 1;
-   else if ((ewin->x + ewin->w - ewin->border->border.right - 1) < 0)
-      x = 0 - ewin->w + ewin->border->border.right + 1;
-   if ((ewin->y + ewin->border->border.top + 1) > VRoot.h)
-      y = VRoot.h - ewin->border->border.top - 1;
-   else if ((ewin->y + ewin->h - ewin->border->border.bottom - 1) < 0)
-      y = 0 - ewin->h + ewin->border->border.bottom + 1;
-
-   if (x != ewin->x || y != ewin->y)
-      MoveEwin(ewin, x, y);
-}
-
-#define MR_FLAGS_MOVE   1
-#define MR_FLAGS_RESIZE 2
-
-static void
-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;
-   char                move = 0, resize = 0;
-   EWin              **lst;
-   int                 i, num;
-
-   EDBUG(3, "doMoveResizeEwin");
-   if (call_depth > 256)
-      EDBUG_RETURN_;
-   call_depth++;
-
-   if (EventDebug(EDBUG_TYPE_MOVERESIZE))
-      Eprintf("doMoveResizeEwin(%d) %#lx %d+%d %d*%d %d %s\n", call_depth,
-             ewin->client.win, x, y, w, h, flags, EwinGetTitle(ewin));
-
-   if (Mode.mode == MODE_NONE && Mode.move.check)
-     {
-       /* Don't throw windows offscreen */
-       sw = VRoot.w;
-       sh = VRoot.h;
-       if (ewin->sticky)
-         {
-            x0 = y0 = 0;
-         }
-       else
-         {
-            int                 ax, ay;
-
-            ax = desks.desk[ewin->desktop].current_area_x;
-            ay = desks.desk[ewin->desktop].current_area_y;
-            x0 = -ax * sw;
-            y0 = -ay * sh;
-            sw *= Conf.areas.nx;
-            sh *= Conf.areas.ny;
-         }
-       dx = ewin->w / 4;
-       if (dx > 8)
-          dx = 8;
-       dy = ewin->h / 4;
-       if (dy > 8)
-          dy = 8;
-
-       if (x < x0 - ewin->w + dx)
-          x = x0 - ewin->w + dx;
-       else if (x > x0 + sw - dx)
-          x = x0 + sw - dx;
-       if (y < y0 - ewin->h + dy)
-          y = y0 - ewin->h + dy;
-       else if (y > y0 + sh - dy)
-          y = y0 + sh - dy;
-     }
-
-   if (flags & MR_FLAGS_MOVE)
-     {
-       dx = x - ewin->x;
-       dy = y - ewin->y;
-       if ((dx != 0) || (dy != 0))
-          move = 1;
-       ewin->x = x;
-       ewin->y = y;
-       ewin->client.x = x + ewin->border->border.left;
-       ewin->client.y = y + ewin->border->border.top;
-     }
-
-   if (flags & MR_FLAGS_RESIZE)
-     {
-       if ((w != ewin->client.w) || (h != ewin->client.h))
-          resize = 2;
-       ewin->client.w = w;
-       ewin->client.h = h;
-       ICCCM_MatchSize(ewin);
-
-       if (!ewin->shaded)
-         {
-            ewin->w = ewin->client.w + ewin->border->border.left +
-               ewin->border->border.right;
-            ewin->h = ewin->client.h + ewin->border->border.top +
-               ewin->border->border.bottom;
-         }
-     }
-
-   EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-
-   if ((Mode.mode != MODE_MOVE_PENDING && Mode.mode != MODE_MOVE)
-       || (Mode.have_place_grab))
-      ICCCM_Configure(ewin);
-
-   EwinBorderCalcSizes(ewin);
-
-   if (move)
-     {
-
-       lst = EwinListTransients(ewin, &num, 0);
-       for (i = 0; i < num; i++)
-         {
-#if 0                          /* Why? */
-            if (!((Mode.flipp) && (lst[i]->floating))
-                && (lst[i]->client.mwm_decor_border
-                    || lst[i]->client.mwm_decor_resizeh
-                    || lst[i]->client.mwm_decor_title
-                    || lst[i]->client.mwm_decor_menu
-                    || lst[i]->client.mwm_decor_minimize
-                    || lst[i]->client.mwm_decor_maximize))
-#endif
-               MoveEwin(lst[i], lst[i]->x + dx, lst[i]->y + dy);
-         }
-       if (lst)
-          Efree(lst);
-     }
-
-   if ((Mode.mode == MODE_NONE) /* && (move || resize) */ )
-     {
-       ewin->shape_x = x;
-       ewin->shape_y = y;
-       EwinUpdateAfterMoveResize(ewin, resize);
-     }
-
-   call_depth--;
-   EDBUG_RETURN_;
-}
-
-void
-MoveEwin(EWin * ewin, int x, int y)
-{
-   doMoveResizeEwin(ewin, x, y, 0, 0, MR_FLAGS_MOVE);
-}
-
-void
-ResizeEwin(EWin * ewin, int w, int h)
-{
-   doMoveResizeEwin(ewin, 0, 0, w, h, MR_FLAGS_RESIZE);
-}
-
-void
-MoveResizeEwin(EWin * ewin, int x, int y, int w, int h)
-{
-   doMoveResizeEwin(ewin, x, y, w, h, MR_FLAGS_MOVE | MR_FLAGS_RESIZE);
-}
-
 #if 0                          /* Unused */
 void
 FloatEwin(EWin * ewin)
@@ -1631,954 +1323,6 @@
    EDBUG_RETURN_;
 }
 
-void
-EwinIconify(EWin * ewin)
-{
-   static int          call_depth = 0;
-   EWin              **lst, *e;
-   int                 i, num;
-   char                was_shaded;
-
-   EDBUG(6, "IconboxIconifyEwin");
-
-   if (!ewin)
-      EDBUG_RETURN_;
-
-   if (GetZoomEWin() == ewin)
-      Zoom(NULL);
-
-   if (ewin->ibox)
-      EDBUG_RETURN_;
-
-   if (ewin->state == EWIN_STATE_ICONIC)
-      EDBUG_RETURN_;
-
-   if (call_depth > 256)
-      EDBUG_RETURN_;
-   call_depth++;
-
-   was_shaded = ewin->shaded;
-
-   IconboxesEwinIconify(ewin);
-
-   HideEwin(ewin);
-
-   /* Save position at which the window was iconified in req_x/y */
-   ewin->req_x = ewin->x;
-   ewin->req_y = ewin->y;
-
-   if (was_shaded != ewin->shaded)
-      EwinInstantShade(ewin, 0);
-
-   ewin->iconified = 3;
-   ICCCM_Iconify(ewin);
-
-   lst = EwinListTransients(ewin, &num, 0);
-   for (i = 0; i < num; i++)
-     {
-       e = lst[i];
-       if (e->iconified)
-          continue;
-
-       HideEwin(e);
-       e->iconified = 4;
-       e->req_x = e->x;
-       e->req_y = e->y;
-     }
-   if (lst)
-      Efree(lst);
-#if ENABLE_GNOME
-   if (lst)
-      GNOME_SetClientList();
-#endif
-
-   HintsSetWindowState(ewin);
-
-   call_depth--;
-   EDBUG_RETURN_;
-}
-
-void
-EwinDeIconify(EWin * ewin)
-{
-   static int          call_depth = 0;
-   EWin              **lst, *e;
-   int                 i, num;
-   int                 x, y, dx, dy;
-
-   EDBUG(6, "EwinDeIconify");
-
-   if (call_depth > 256)
-      EDBUG_RETURN_;
-   call_depth++;
-
-   if (ewin->state != EWIN_STATE_ICONIC)
-      EDBUG_RETURN_;
-
-   RemoveMiniIcon(ewin);
-
-   x = ewin->req_x;
-   y = ewin->req_y;
-
-   /* If we iconified an offscreen window, get it back on screen */
-   if (x + ewin->w <= 4 || x > VRoot.w - 4 ||
-       y + ewin->h <= 4 || y > VRoot.h - 4)
-     {
-       dx = ewin->w / 2;
-       dy = ewin->h / 2;
-       x = (ewin->x + dx) % VRoot.w;
-       if (x < 0)
-          x += VRoot.w;
-       x -= dx;
-       y = (ewin->y + dy) % VRoot.h;
-       if (y < 0)
-          y += VRoot.h;
-       y -= dy;
-     }
-
-   dx = x - ewin->req_x;
-   dy = y - ewin->req_y;
-
-   if (ewin->sticky)
-      MoveEwin(ewin, x, y);
-   else
-      MoveEwinToDesktopAt(ewin, desks.current, x, y);
-
-   ewin->iconified = 0;
-
-   IconboxesEwinDeIconify(ewin);
-
-   RaiseEwin(ewin);
-   ShowEwin(ewin);
-   ICCCM_DeIconify(ewin);
-
-   lst = EwinListTransients(ewin, &num, 0);
-   for (i = 0; i < num; i++)
-     {
-       e = lst[i];
-       if (e->iconified != 4)
-          continue;
-
-       if (e->sticky)
-          MoveEwin(e, e->req_x + dx, e->req_y + dy);
-       else
-          MoveEwinToDesktopAt(e, desks.current, e->req_x + dx, e->req_y + dy);
-
-       RaiseEwin(e);
-       ShowEwin(e);
-       e->iconified = 0;
-     }
-   if (lst)
-      Efree(lst);
-#if ENABLE_GNOME
-   if (lst)
-      GNOME_SetClientList();
-#endif
-
-   HintsSetWindowState(ewin);
-
-   call_depth--;
-   EDBUG_RETURN_;
-}
-
-void
-EwinUnStick(EWin * ewin)
-{
-
-   EDBUG(4, "EwinUnStick");
-   if (!ewin)
-      EDBUG_RETURN_;
-
-   ewin->sticky = 0;
-   MoveEwinToDesktopAt(ewin, desks.current, ewin->x, ewin->y);
-   EwinBorderUpdateState(ewin);
-   HintsSetWindowState(ewin);
-
-   EDBUG_RETURN_;
-}
-
-void
-EwinStick(EWin * ewin)
-{
-   int                 x, y, dx, dy;
-
-   EDBUG(4, "EwinStick");
-   if (!ewin)
-      EDBUG_RETURN_;
-
-   /* Avoid "losing" windows made sticky while not in the current viewport */
-   dx = ewin->w / 2;
-   dy = ewin->h / 2;
-   x = (ewin->x + dx) % VRoot.w;
-   if (x < 0)
-      x += VRoot.w;
-   x -= dx;
-   y = (ewin->y + dy) % VRoot.h;
-   if (y < 0)
-      y += VRoot.h;
-   y -= dy;
-
-   MoveEwinToDesktopAt(ewin, desks.current, x, y);
-   ewin->sticky = 1;
-   EwinBorderUpdateState(ewin);
-   HintsSetWindowState(ewin);
-
-   EDBUG_RETURN_;
-}
-
-void
-EwinInstantShade(EWin * ewin, int force)
-{
-   XSetWindowAttributes att;
-   int                 b, d;
-   char                pq;
-
-   EDBUG(4, "EwinInstantShade");
-
-   if ((ewin->border->border.left == 0) && (ewin->border->border.right == 0)
-       && (ewin->border->border.top == 0) && (ewin->border->border.bottom == 0))
-      EDBUG_RETURN_;
-   if (GetZoomEWin() == ewin)
-      EDBUG_RETURN_;
-   if (ewin->shaded && !force)
-      EDBUG_RETURN_;
-
-   pq = Mode.queue_up;
-   Mode.queue_up = 0;
-   switch (ewin->border->shadedir)
-     {
-     case 0:
-       att.win_gravity = EastGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       EwinBorderMinShadeSize(ewin, &b, &d);
-       ewin->shaded = 2;
-       ewin->w = b;
-       EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       EwinBorderCalcSizes(ewin);
-       XSync(disp, False);
-       break;
-     case 1:
-       att.win_gravity = WestGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       EwinBorderMinShadeSize(ewin, &b, &d);
-       d = ewin->x + ewin->w - b;
-       ewin->shaded = 2;
-       ewin->w = b;
-       ewin->x = d;
-       EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       EwinBorderCalcSizes(ewin);
-       XSync(disp, False);
-       break;
-     case 2:
-       att.win_gravity = SouthGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       EwinBorderMinShadeSize(ewin, &b, &d);
-       b = d;
-       ewin->shaded = 2;
-       ewin->h = b;
-       EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       EwinBorderCalcSizes(ewin);
-       XSync(disp, False);
-       break;
-     case 3:
-       att.win_gravity = SouthGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       EwinBorderMinShadeSize(ewin, &b, &d);
-       b = d;
-       d = ewin->y + ewin->h - b;
-       ewin->shaded = 2;
-       ewin->h = b;
-       ewin->y = d;
-       EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       EwinBorderCalcSizes(ewin);
-       XSync(disp, False);
-       break;
-     default:
-       break;
-     }
-   PropagateShapes(ewin->win);
-   Mode.queue_up = pq;
-   HintsSetWindowState(ewin);
-   if (Mode.mode == MODE_NONE)
-     {
-       PagerEwinOutsideAreaUpdate(ewin);
-       ForceUpdatePagersForDesktop(ewin->desktop);
-     }
-   EDBUG_RETURN_;
-}
-
-void
-EwinInstantUnShade(EWin * ewin)
-{
-   XSetWindowAttributes att;
-   int                 b, d;
-   char                pq;
-
-   EDBUG(4, "EwinInstantUnShade");
-   if (GetZoomEWin() == ewin)
-      EDBUG_RETURN_;
-   if (!ewin->shaded)
-      EDBUG_RETURN_;
-   pq = Mode.queue_up;
-   Mode.queue_up = 0;
-   switch (ewin->border->shadedir)
-     {
-     case 0:
-       att.win_gravity = EastGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       b = ewin->client.w + ewin->border->border.left +
-          ewin->border->border.right;
-       ewin->shaded = 0;
-       ewin->w = b;
-       MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h);
-       XSync(disp, False);
-       break;
-     case 1:
-       att.win_gravity = WestGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       b = ewin->client.w + ewin->border->border.left +
-          ewin->border->border.right;
-       d = ewin->x + ewin->w - (ewin->border->border.right + ewin->client.w +
-                                ewin->border->border.left);
-       ewin->shaded = 0;
-       ewin->w = b;
-       ewin->x = d;
-       MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h);
-       XSync(disp, False);
-       break;
-     case 2:
-       att.win_gravity = SouthGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       b = ewin->client.h + ewin->border->border.top +
-          ewin->border->border.bottom;
-       ewin->shaded = 0;
-       ewin->h = b;
-       MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h);
-       XSync(disp, False);
-       break;
-     case 3:
-       att.win_gravity = SouthGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       b = ewin->client.h + ewin->border->border.top +
-          ewin->border->border.bottom;
-       d = ewin->y + ewin->h - (ewin->border->border.bottom +
-                                ewin->client.h + ewin->border->border.top);
-       ewin->shaded = 0;
-       ewin->h = b;
-       ewin->y = d;
-       MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h);
-       XSync(disp, False);
-       break;
-     default:
-       break;
-     }
-   PropagateShapes(ewin->win);
-   Mode.queue_up = pq;
-   HintsSetWindowState(ewin);
-   if (Mode.mode == MODE_NONE)
-     {
-       PagerEwinOutsideAreaUpdate(ewin);
-       ForceUpdatePagersForDesktop(ewin->desktop);
-     }
-   EDBUG_RETURN_;
-}
-
-void
-EwinShade(EWin * ewin)
-{
-   XSetWindowAttributes att;
-   int                 i, j, speed, a, b, c, d, ww, hh;
-   int                 k, spd, min;
-   struct timeval      timev1, timev2;
-   int                 dsec, dusec;
-   double              tm;
-   char                pq;
-
-   EDBUG(4, "EwinShade");
-
-   if ((ewin->border->border.left == 0) && (ewin->border->border.right == 0)
-       && (ewin->border->border.top == 0) && (ewin->border->border.bottom == 0))
-      EDBUG_RETURN_;
-   if (GetZoomEWin() == ewin)
-      EDBUG_RETURN_;
-   if (ewin->shaded)
-      EDBUG_RETURN_;
-   if ((ewin->border) && (!strcmp(ewin->border->name, "BORDERLESS")))
-      EDBUG_RETURN_;
-
-   pq = Mode.queue_up;
-   Mode.queue_up = 0;
-
-   speed = Conf.shadespeed;
-   spd = 32;
-   min = 2;
-
-   GrabX();
-
-   switch (ewin->border->shadedir)
-     {
-     case 0:
-       att.win_gravity = EastGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       EwinBorderMinShadeSize(ewin, &b, &d);
-       a = ewin->w;
-       if ((Conf.animate_shading) || (ewin->menu))
-          for (k = 0; k <= 1024; k += spd)
-            {
-               gettimeofday(&timev1, NULL);
-               i = ((a * (1024 - k)) + (b * k)) >> 10;
-               ewin->w = i;
-               if (ewin->w < 1)
-                  ewin->w = 1;
-               ww = ewin->w - ewin->border->border.left -
-                  ewin->border->border.right;
-               if (ww < 1)
-                  ww = 1;
-               hh = ewin->client.h;
-               EMoveResizeWindow(disp, ewin->win_container,
-                                 ewin->border->border.left,
-                                 ewin->border->border.top, ww, hh);
-               EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w,
-                                 ewin->h);
-               EwinBorderCalcSizes(ewin);
-               if (ewin->client.shaped)
-                  EShapeCombineShape(disp, ewin->win_container,
-                                     ShapeBounding, -(ewin->client.w - ww),
-                                     0, ewin->client.win, ShapeBounding,
-                                     ShapeSet);
-               PropagateShapes(ewin->win);
-               gettimeofday(&timev2, NULL);
-               dsec = timev2.tv_sec - timev1.tv_sec;
-               dusec = timev2.tv_usec - timev1.tv_usec;
-               if (dusec < 0)
-                 {
-                    dsec--;
-                    dusec += 1000000;
-                 }
-               tm = (double)dsec + (((double)dusec) / 1000000);
-               spd = (int)((double)speed * tm);
-               if (spd < min)
-                  spd = min;
-            }
-       ewin->shaded = 2;
-       ewin->w = b;
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-       EwinBorderCalcSizes(ewin);
-       XSync(disp, False);
-       break;
-     case 1:
-       att.win_gravity = WestGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       EwinBorderMinShadeSize(ewin, &b, &d);
-       a = ewin->w;
-       c = ewin->x;
-       d = ewin->x + ewin->w - b;
-       if ((Conf.animate_shading) || (ewin->menu))
-          for (k = 0; k <= 1024; k += spd)
-            {
-               gettimeofday(&timev1, NULL);
-               i = ((a * (1024 - k)) + (b * k)) >> 10;
-               j = ((c * (1024 - k)) + (d * k)) >> 10;
-               ewin->w = i;
-               ewin->x = j;
-               if (ewin->w < 1)
-                  ewin->w = 1;
-               ww = ewin->w - ewin->border->border.left -
-                  ewin->border->border.right;
-               if (ww < 1)
-                  ww = 1;
-               hh = ewin->client.h;
-               EMoveResizeWindow(disp, ewin->win_container,
-                                 ewin->border->border.left,
-                                 ewin->border->border.top, ww, hh);
-               EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w,
-                                 ewin->h);
-               EwinBorderCalcSizes(ewin);
-               if (ewin->client.shaped)
-                  EShapeCombineShape(disp, ewin->win_container,
-                                     ShapeBounding, 0, 0, ewin->client.win,
-                                     ShapeBounding, ShapeSet);
-               PropagateShapes(ewin->win);
-               gettimeofday(&timev2, NULL);
-               dsec = timev2.tv_sec - timev1.tv_sec;
-               dusec = timev2.tv_usec - timev1.tv_usec;
-               if (dusec < 0)
-                 {
-                    dsec--;
-                    dusec += 1000000;
-                 }
-               tm = (double)dsec + (((double)dusec) / 1000000);
-               spd = (int)((double)speed * tm);
-               if (spd < min)
-                  spd = min;
-            }
-       ewin->shaded = 2;
-       ewin->w = b;
-       ewin->x = d;
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-       EwinBorderCalcSizes(ewin);
-       XSync(disp, False);
-       break;
-     case 2:
-       att.win_gravity = SouthGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       a = ewin->h;
-       EwinBorderMinShadeSize(ewin, &b, &d);
-       b = d;
-       if ((Conf.animate_shading) || (ewin->menu))
-          for (k = 0; k <= 1024; k += spd)
-            {
-               gettimeofday(&timev1, NULL);
-               i = ((a * (1024 - k)) + (b * k)) >> 10;
-               ewin->h = i;
-               if (ewin->h < 1)
-                  ewin->h = 1;
-               hh = ewin->h - ewin->border->border.top -
-                  ewin->border->border.bottom;
-               if (hh < 1)
-                  hh = 1;
-               ww = ewin->client.w;
-               EMoveResizeWindow(disp, ewin->win_container,
-                                 ewin->border->border.left,
-                                 ewin->border->border.top, ww, hh);
-               EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w,
-                                 ewin->h);
-               EwinBorderCalcSizes(ewin);
-               if (ewin->client.shaped)
-                  EShapeCombineShape(disp, ewin->win_container,
-                                     ShapeBounding, 0,
-                                     -(ewin->client.h - hh),
-                                     ewin->client.win, ShapeBounding,
-                                     ShapeSet);
-               PropagateShapes(ewin->win);
-               gettimeofday(&timev2, NULL);
-               dsec = timev2.tv_sec - timev1.tv_sec;
-               dusec = timev2.tv_usec - timev1.tv_usec;
-               if (dusec < 0)
-                 {
-                    dsec--;
-                    dusec += 1000000;
-                 }
-               tm = (double)dsec + (((double)dusec) / 1000000);
-               spd = (int)((double)speed * tm);
-               if (spd < min)
-                  spd = min;
-            }
-       ewin->shaded = 2;
-       ewin->h = b;
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-       EwinBorderCalcSizes(ewin);
-       XSync(disp, False);
-       break;
-     case 3:
-       att.win_gravity = SouthGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       EwinBorderMinShadeSize(ewin, &b, &d);
-       a = ewin->h;
-       b = d;
-       c = ewin->y;
-       d = ewin->y + ewin->h - b;
-       if ((Conf.animate_shading) || (ewin->menu))
-          for (k = 0; k <= 1024; k += spd)
-            {
-               gettimeofday(&timev1, NULL);
-               i = ((a * (1024 - k)) + (b * k)) >> 10;
-               j = ((c * (1024 - k)) + (d * k)) >> 10;
-               ewin->h = i;
-               ewin->y = j;
-               if (ewin->h < 1)
-                  ewin->h = 1;
-               hh = ewin->h - ewin->border->border.top -
-                  ewin->border->border.bottom;
-               if (hh < 1)
-                  hh = 1;
-               ww = ewin->client.w;
-               EMoveResizeWindow(disp, ewin->win_container,
-                                 ewin->border->border.left,
-                                 ewin->border->border.top, ww, hh);
-               EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w,
-                                 ewin->h);
-               EwinBorderCalcSizes(ewin);
-               if (ewin->client.shaped)
-                  EShapeCombineShape(disp, ewin->win_container,
-                                     ShapeBounding, 0, 0, ewin->client.win,
-                                     ShapeBounding, ShapeSet);
-               PropagateShapes(ewin->win);
-               gettimeofday(&timev2, NULL);
-               dsec = timev2.tv_sec - timev1.tv_sec;
-               dusec = timev2.tv_usec - timev1.tv_usec;
-               if (dusec < 0)
-                 {
-                    dsec--;
-                    dusec += 1000000;
-                 }
-               tm = (double)dsec + (((double)dusec) / 1000000);
-               spd = (int)((double)speed * tm);
-               if (spd < min)
-                  spd = min;
-            }
-       ewin->shaded = 2;
-       ewin->h = b;
-       ewin->y = d;
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, ewin->h);
-       EwinBorderCalcSizes(ewin);
-       XSync(disp, False);
-       break;
-     default:
-       break;
-     }
-
-   UngrabX();
-
-   if (ewin->client.shaped)
-      EShapeCombineShape(disp, ewin->win_container, ShapeBounding, 0, 0,
-                        ewin->client.win, ShapeBounding, ShapeSet);
-   PropagateShapes(ewin->win);
-
-   Mode.queue_up = pq;
-
-   HintsSetWindowState(ewin);
-
-   if (Mode.mode == MODE_NONE)
-     {
-       PagerEwinOutsideAreaUpdate(ewin);
-       ForceUpdatePagersForDesktop(ewin->desktop);
-     }
-
-   EDBUG_RETURN_;
-}
-
-void
-EwinUnShade(EWin * ewin)
-{
-   XSetWindowAttributes att;
-   int                 i, j, speed, a, b, c, d;
-   int                 k, spd, min;
-   struct timeval      timev1, timev2;
-   int                 dsec, dusec;
-   double              tm;
-   char                pq;
-
-   EDBUG(4, "EwinUnShade");
-   if (GetZoomEWin() == ewin)
-      EDBUG_RETURN_;
-   if (!ewin->shaded || ewin->iconified)
-      EDBUG_RETURN_;
-
-   pq = Mode.queue_up;
-   Mode.queue_up = 0;
-
-   speed = Conf.shadespeed;
-   spd = 32;
-   min = 2;
-
-   GrabX();
-
-   switch (ewin->border->shadedir)
-     {
-     case 0:
-       att.win_gravity = EastGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       a = ewin->border->border.left;
-       b = ewin->client.w + ewin->border->border.left +
-          ewin->border->border.right;
-       ewin->shaded = 0;
-       EMoveResizeWindow(disp, ewin->win_container,
-                         ewin->border->border.left, ewin->border->border.top,
-                         1, ewin->client.h);
-       EMoveResizeWindow(disp, ewin->client.win, -ewin->client.w, 0,
-                         ewin->client.w, ewin->client.h);
-       EMapWindow(disp, ewin->client.win);
-       EMapWindow(disp, ewin->win_container);
-       if ((Conf.animate_shading) || (ewin->menu))
-          for (k = 0; k <= 1024; k += spd)
-            {
-               gettimeofday(&timev1, NULL);
-               i = ((a * (1024 - k)) + (b * k)) >> 10;
-               ewin->w = i;
-               EMoveResizeWindow(disp, ewin->win_container,
-                                 ewin->border->border.left,
-                                 ewin->border->border.top,
-                                 ewin->w - ewin->border->border.left -
-                                 ewin->border->border.right, ewin->client.h);
-               EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w,
-                                 ewin->h);
-               EwinBorderCalcSizes(ewin);
-               if (ewin->client.shaped)
-                  EShapeCombineShape(disp, ewin->win_container,
-                                     ShapeBounding,
-                                     -(ewin->client.w -
-                                       (ewin->w - ewin->border->border.left -
-                                        ewin->border->border.right)), 0,
-                                     ewin->client.win, ShapeBounding,
-                                     ShapeSet);
-               PropagateShapes(ewin->win);
-               gettimeofday(&timev2, NULL);
-               dsec = timev2.tv_sec - timev1.tv_sec;
-               dusec = timev2.tv_usec - timev1.tv_usec;
-               if (dusec < 0)
-                 {
-                    dsec--;
-                    dusec += 1000000;
-                 }
-               tm = (double)dsec + (((double)dusec) / 1000000);
-               spd = (int)((double)speed * tm);
-               if (spd < min)
-                  spd = min;
-            }
-       ewin->w = b;
-       MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h);
-       XSync(disp, False);
-       break;
-     case 1:
-       att.win_gravity = WestGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       a = ewin->border->border.right;
-       b = ewin->client.w + ewin->border->border.left +
-          ewin->border->border.right;
-       c = ewin->x;
-       d = ewin->x + ewin->w - (ewin->border->border.right + ewin->client.w +
-                                ewin->border->border.left);
-       ewin->shaded = 0;
-       EMoveResizeWindow(disp, ewin->win_container,
-                         ewin->border->border.left, ewin->border->border.top,
-                         1, ewin->client.h);
-       EMoveResizeWindow(disp, ewin->client.win, 0, 0, ewin->client.w,
-                         ewin->client.h);
-       EMapWindow(disp, ewin->client.win);
-       EMapWindow(disp, ewin->win_container);
-       if ((Conf.animate_shading) || (ewin->menu))
-          for (k = 0; k <= 1024; k += spd)
-            {
-               gettimeofday(&timev1, NULL);
-               i = ((a * (1024 - k)) + (b * k)) >> 10;
-               j = ((c * (1024 - k)) + (d * k)) >> 10;
-               ewin->w = i;
-               ewin->x = j;
-               EMoveResizeWindow(disp, ewin->win_container,
-                                 ewin->border->border.left,
-                                 ewin->border->border.top,
-                                 ewin->w - ewin->border->border.left -
-                                 ewin->border->border.right, ewin->client.h);
-               EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w,
-                                 ewin->h);
-               EwinBorderCalcSizes(ewin);
-               if (ewin->client.shaped)
-                  EShapeCombineShape(disp, ewin->win_container,
-                                     ShapeBounding, 0, 0, ewin->client.win,
-                                     ShapeBounding, ShapeSet);
-               PropagateShapes(ewin->win);
-               gettimeofday(&timev2, NULL);
-               dsec = timev2.tv_sec - timev1.tv_sec;
-               dusec = timev2.tv_usec - timev1.tv_usec;
-               if (dusec < 0)
-                 {
-                    dsec--;
-                    dusec += 1000000;
-                 }
-               tm = (double)dsec + (((double)dusec) / 1000000);
-               spd = (int)((double)speed * tm);
-               if (spd < min)
-                  spd = min;
-            }
-       ewin->w = b;
-       ewin->x = d;
-       MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h);
-       XSync(disp, False);
-       break;
-     case 2:
-       att.win_gravity = SouthGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       a = ewin->border->border.top;
-       b = ewin->client.h + ewin->border->border.top +
-          ewin->border->border.bottom;
-       ewin->shaded = 0;
-       EMoveResizeWindow(disp, ewin->win_container,
-                         ewin->border->border.left, ewin->border->border.top,
-                         ewin->client.w, 1);
-       EMoveResizeWindow(disp, ewin->client.win, 0, -ewin->client.h,
-                         ewin->client.w, ewin->client.h);
-       EMapWindow(disp, ewin->client.win);
-       EMapWindow(disp, ewin->win_container);
-       if ((Conf.animate_shading) || (ewin->menu))
-          for (k = 0; k <= 1024; k += spd)
-            {
-               gettimeofday(&timev1, NULL);
-               i = ((a * (1024 - k)) + (b * k)) >> 10;
-               ewin->h = i;
-               EMoveResizeWindow(disp, ewin->win_container,
-                                 ewin->border->border.left,
-                                 ewin->border->border.top, ewin->client.w,
-                                 ewin->h - ewin->border->border.top -
-                                 ewin->border->border.bottom);
-               EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w,
-                                 ewin->h);
-               EwinBorderCalcSizes(ewin);
-               if (ewin->client.shaped)
-                  EShapeCombineShape(disp, ewin->win_container,
-                                     ShapeBounding, 0,
-                                     -(ewin->client.h -
-                                       (ewin->h - ewin->border->border.top -
-                                        ewin->border->border.bottom)),
-                                     ewin->client.win, ShapeBounding,
-                                     ShapeSet);
-               PropagateShapes(ewin->win);
-               gettimeofday(&timev2, NULL);
-               dsec = timev2.tv_sec - timev1.tv_sec;
-               dusec = timev2.tv_usec - timev1.tv_usec;
-               if (dusec < 0)
-                 {
-                    dsec--;
-                    dusec += 1000000;
-                 }
-               tm = (double)dsec + (((double)dusec) / 1000000);
-               spd = (int)((double)speed * tm);
-               if (spd < min)
-                  spd = min;
-            }
-       ewin->h = b;
-       MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h);
-       XSync(disp, False);
-       break;
-     case 3:
-       att.win_gravity = SouthGravity;
-       XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
-       a = ewin->border->border.bottom;
-       b = ewin->client.h + ewin->border->border.top +
-          ewin->border->border.bottom;
-       c = ewin->y;
-       d = ewin->y + ewin->h - (ewin->border->border.bottom +
-                                ewin->client.h + ewin->border->border.top);
-       ewin->shaded = 0;
-       EMoveResizeWindow(disp, ewin->win_container,
-                         ewin->border->border.left, ewin->border->border.top,
-                         ewin->client.w, 1);
-       EMoveResizeWindow(disp, ewin->client.win, 0, 0, ewin->client.w,
-                         ewin->client.h);
-       EMapWindow(disp, ewin->client.win);
-       EMapWindow(disp, ewin->win_container);
-       if ((Conf.animate_shading) || (ewin->menu))
-          for (k = 0; k <= 1024; k += spd)
-            {
-               gettimeofday(&timev1, NULL);
-               i = ((a * (1024 - k)) + (b * k)) >> 10;
-               j = ((c * (1024 - k)) + (d * k)) >> 10;
-               ewin->h = i;
-               ewin->y = j;
-               EMoveResizeWindow(disp, ewin->win_container,
-                                 ewin->border->border.left,
-                                 ewin->border->border.top, ewin->client.w,
-                                 ewin->h - ewin->border->border.top -
-                                 ewin->border->border.bottom);
-               EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w,
-                                 ewin->h);
-               EwinBorderCalcSizes(ewin);
-               if (ewin->client.shaped)
-                  EShapeCombineShape(disp, ewin->win_container,
-                                     ShapeBounding, 0, 0, ewin->client.win,
-                                     ShapeBounding, ShapeSet);
-               PropagateShapes(ewin->win);
-               gettimeofday(&timev2, NULL);
-               dsec = timev2.tv_sec - timev1.tv_sec;
-               dusec = timev2.tv_usec - timev1.tv_usec;
-               if (dusec < 0)
-                 {
-                    dsec--;
-                    dusec += 1000000;
-                 }
-               tm = (double)dsec + (((double)dusec) / 1000000);
-               spd = (int)((double)speed * tm);
-               if (spd < min)
-                  spd = min;
-            }
-       ewin->h = b;
-       ewin->y = d;
-       MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h);
-       XSync(disp, False);
-       break;
-     default:
-       break;
-     }
-
-   UngrabX();
-
-   if (ewin->client.shaped)
-      EShapeCombineShape(disp, ewin->win_container, ShapeBounding, 0, 0,
-                        ewin->client.win, ShapeBounding, ShapeSet);
-   PropagateShapes(ewin->win);
-
-   Mode.queue_up = pq;
-
-   HintsSetWindowState(ewin);
-
-   if (Mode.mode == MODE_NONE)
-     {
-       PagerEwinOutsideAreaUpdate(ewin);
-       ForceUpdatePagersForDesktop(ewin->desktop);
-     }
-
-   EDBUG_RETURN_;
-}
-
-void
-EwinSetFullscreen(EWin * ewin, int on)
-{
-   int                 x, y, w, h;
-   const Border       *b;
-
-   if (ewin->st.fullscreen == on)
-      return;
-
-   if (on)
-     {
-       ewin->lx = ewin->x;
-       ewin->ly = ewin->y;
-       ewin->lw = ewin->client.w;
-       ewin->lh = ewin->client.h;
-       ewin->ll = ewin->layer;
-       ScreenGetAvailableArea(ewin->x, ewin->y, &x, &y, &w, &h);
-#if 0
-       ewin->layer = 10;
-#endif
-       ewin->fixedpos = 1;
-       b = (Border *) FindItem("BORDERLESS", 0, LIST_FINDBY_NAME,
-                               LIST_TYPE_BORDER);
-     }
-   else
-     {
-       x = ewin->lx;
-       y = ewin->ly;
-       w = ewin->lw;
-       h = ewin->lh;
-       ewin->layer = ewin->ll;
-       ewin->fixedpos = 0;     /* Yeah - well */
-       b = ewin->normal_border;
-     }
-   ewin->st.fullscreen = on;
-   RaiseEwin(ewin);
-   MoveResizeEwin(ewin, x, y, w, h);
-   HintsSetWindowState(ewin);
-   EwinSetBorder(ewin, b, 1);
-}
-
-void
-MoveEwinToArea(EWin * ewin, int ax, int ay)
-{
-   EDBUG(4, "MoveEwinToArea");
-   AreaFix(&ax, &ay);
-   MoveEwin(ewin, ewin->x + (VRoot.w * (ax - ewin->area_x)),
-           ewin->y + (VRoot.h * (ay - ewin->area_y)));
-   EDBUG_RETURN_;
-}
-
 int
 EwinGetDesk(const EWin * ewin)
 {




-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to