Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h emodule.h ewin-ops.c ewins.c pager.c 


Log Message:
Fix various pager update issues.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.448
retrieving revision 1.449
diff -u -3 -r1.448 -r1.449
--- E.h 4 Jun 2005 23:57:58 -0000       1.448
+++ E.h 5 Jun 2005 11:27:27 -0000       1.449
@@ -703,6 +703,7 @@
    EObj                o;
    char                type;
    char                state;
+   int                 vx, vy; /* Position in virtual root */
    int                 lx, ly; /* Last pos */
    int                 lw, lh; /* Last size */
    int                 ll;     /* Last layer */
@@ -761,6 +762,7 @@
       unsigned            fullscreen:1;
       unsigned            showingdesk:1;       /* Iconified by show desktop */
       unsigned            attention:1;
+      unsigned            animated:1;
    } st;
    struct
    {
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/emodule.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- emodule.h   4 Jun 2005 23:58:07 -0000       1.5
+++ emodule.h   5 Jun 2005 11:27:40 -0000       1.6
@@ -57,7 +57,6 @@
    ESIGNAL_DESK_REMOVED,
    ESIGNAL_DESK_SWITCH_START,
    ESIGNAL_DESK_SWITCH_DONE,
-   ESIGNAL_DESK_CHANGE,
    ESIGNAL_DESK_RESIZE,
    ESIGNAL_BACKGROUND_CHANGE,
    ESIGNAL_MOVE_START,
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewin-ops.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -3 -r1.46 -r1.47
--- ewin-ops.c  4 Jun 2005 23:58:07 -0000       1.46
+++ ewin-ops.c  5 Jun 2005 11:27:40 -0000       1.47
@@ -126,12 +126,17 @@
 
        k = ETimedLoopNext();
      }
-   DrawEwinShape(ewin, Conf.slidemode, x, y, ewin->client.w, ewin->client.h, 
2);
-   MoveEwin(ewin, tx, ty);
 
+   ewin->st.animated = 0;
    Mode.place.doing_slide = 0;
    FocusEnable(1);
 
+   if (Conf.slidemode == 0)
+      MoveEwin(ewin, tx, ty);
+   else
+      DrawEwinShape(ewin, Conf.slidemode, x, y, ewin->client.w, ewin->client.h,
+                   2);
+
    if (Conf.slidemode > 0)
       EUngrabServer();
 
@@ -238,14 +243,16 @@
 static void
 EwinDetermineArea(EWin * ewin)
 {
+   Desk               *d;
    int                 ax, ay;
 
-   DeskGetArea(EoGetDesk(ewin), &ax, &ay);
-   ax = (EoGetX(ewin) + (EoGetW(ewin) / 2) + (ax * VRoot.w)) / VRoot.w;
-   ay = (EoGetY(ewin) + (EoGetH(ewin) / 2) + (ay * VRoot.h)) / VRoot.h;
+   d = DeskGet(EoGetDesk(ewin));
+   ewin->vx = d->current_area_x * EoGetW(d) + EoGetX(ewin);
+   ewin->vy = d->current_area_y * EoGetH(d) + EoGetY(ewin);
 
+   ax = (ewin->vx + EoGetW(ewin) / 2) / EoGetW(d);
+   ay = (ewin->vy + EoGetH(ewin) / 2) / EoGetH(d);
    AreaFix(&ax, &ay);
-
    if (ax != ewin->area_x || ay != ewin->area_y)
      {
        ewin->area_x = ax;
@@ -421,6 +428,8 @@
    Eprintf("repa=%d float=%d raise=%d move=%d resz=%d\n",
           reparent, floating, raise, move, resize);
 #endif
+   if (EoIsShown(ewin) && (move || reparent))
+      ModulesSignal(ESIGNAL_EWIN_CHANGE, ewin);
 
    if (reparent)
       EoReparent(ewin, desk, x, y);
@@ -478,7 +487,7 @@
 
        SnapshotEwinUpdate(ewin, SNAP_USE_POS | SNAP_USE_SIZE);
 
-       if (call_depth == 1)    /* FIXME - Remove */
+       if (EoIsShown(ewin))
           ModulesSignal(ESIGNAL_EWIN_CHANGE, ewin);
      }
 
@@ -486,16 +495,6 @@
      {
        HintsSetWindowDesktop(ewin);
        SnapshotEwinUpdate(ewin, SNAP_USE_DESK);
-
-       if (call_depth == 1)    /* FIXME - Remove */
-         {
-            if (EoIsShown(ewin))
-              {
-                 if (pdesk >= 0)
-                    ModulesSignal(ESIGNAL_DESK_CHANGE, (void *)pdesk);
-                 ModulesSignal(ESIGNAL_DESK_CHANGE, (void *)desk);
-              }
-         }
      }
 
    call_depth--;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewins.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -3 -r1.72 -r1.73
--- ewins.c     4 Jun 2005 23:58:08 -0000       1.72
+++ ewins.c     5 Jun 2005 11:27:40 -0000       1.73
@@ -816,7 +816,9 @@
             fy = (rand() % (VRoot.h)) - EoGetH(ewin);
          }
        Mode.place.doing_slide = 1;
+       ewin->st.animated = 1;
        FocusEnable(0);
+
        MoveEwinToDesktopAt(ewin, desk, fx, fy);
        ShowEwin(ewin);
        ewin->req_x = x;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/pager.c,v
retrieving revision 1.147
retrieving revision 1.148
diff -u -3 -r1.147 -r1.148
--- pager.c     28 May 2005 14:33:45 -0000      1.147
+++ pager.c     5 Jun 2005 11:27:41 -0000       1.148
@@ -23,6 +23,11 @@
  */
 #include "E.h"
 
+#define EwinGetVX(ew) (ew->vx)
+#define EwinGetVY(ew) (ew->vy)
+#define EwinGetVX2(ew) (ew->vx + EoGetW(ew))
+#define EwinGetVY2(ew) (ew->vy + EoGetH(ew))
+
 struct
 {
    int                 zoom;
@@ -45,7 +50,7 @@
    /* State flags */
    char                do_newbg;
    char                do_update;
-   char                do_redraw;
+   int                 x1, y1, x2, y2;
 };
 
 typedef struct
@@ -149,7 +154,7 @@
    static double       last_time = 0.0;
    double              cur_time, in;
    static int          calls = 0;
-   int                 y, y2, phase, ax, ay, cx, cy, ww, hh, xx, yy;
+   int                 y, y2, phase, cx, cy, ww, hh, xx, yy;
    static int          offsets[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
 
    p = (Pager *) data;
@@ -180,10 +185,9 @@
    if (Mode.mode != MODE_NONE)
       return;
 
-   GetAreaSize(&ax, &ay);
    DeskGetCurrentArea(&cx, &cy);
-   ww = p->w / ax;
-   hh = p->h / ay;
+   ww = p->dw;
+   hh = p->dh;
    xx = cx * ww;
    yy = cy * hh;
    phase = p->update_phase;
@@ -243,21 +247,16 @@
 static void
 PagerEwinUpdateMini(Pager * p, EWin * ewin)
 {
-   int                 w, h, ax, ay, cx, cy;
-
-   if (!Conf.pagers.enable)
-      return;
-
-   GetAreaSize(&ax, &ay);
-   DeskGetArea(p->desktop, &cx, &cy);
+   int                 w, h;
 
-   w = ((EoGetW(ewin)) * (p->w / ax)) / VRoot.w;
-   h = ((EoGetH(ewin)) * (p->h / ay)) / VRoot.h;
+   w = (EoGetW(ewin) * p->dw) / VRoot.w;
+   h = (EoGetH(ewin) * p->dh) / VRoot.h;
 
    if (w < 1)
       w = 1;
    if (h < 1)
       h = 1;
+
    if ((ewin->mini_w != w) || (ewin->mini_h != h))
      {
        FreePmapMask(&ewin->mini_pmm);
@@ -265,8 +264,7 @@
        ewin->mini_w = w;
        ewin->mini_h = h;
 
-       if ((EoGetDesk(ewin) != DesksGetCurrent()) || (ewin->area_x != cx)
-           || (ewin->area_y != cy) || (!Conf.pagers.snap))
+       if (!Conf.pagers.snap || !EwinIsOnScreen(ewin))
          {
             ImageClass         *ic = NULL;
 
@@ -275,7 +273,6 @@
                ImageclassApplyCopy(ic, EoGetWin(ewin), w, h, 0, 0,
                                    STATE_NORMAL, &ewin->mini_pmm, 1,
                                    ST_UNKNWN);
-
          }
        else
          {
@@ -291,40 +288,51 @@
 }
 
 static void
-PagerRedraw(Pager * p)
-{
-   p->do_redraw = 1;
-   pager_update_pending = 1;
-}
-
-static void
-PagerUpdate(Pager * p)
-{
-   p->do_update = 1;
-   pager_update_pending = 1;
-}
-
-static void
-doPagerRedraw(Pager * p)
+doPagerUpdate(Pager * p)
 {
-   int                 x, y, ax, ay, cx, cy;
+   int                 x, y, ax, ay, cx, cy, vx, vy;
    GC                  gc;
    EWin               *const *lst;
-   int                 i, num;
+   int                 i, num, update_screen_included, update_screen_only;
 
    p->update_phase = 0;
    GetAreaSize(&ax, &ay);
    DeskGetArea(p->desktop, &cx, &cy);
+   vx = cx * VRoot.w;
+   vy = cy * VRoot.h;
 
    gc = ECreateGC(p->pmap, 0, NULL);
    if (gc == None)
       return;
 
+   update_screen_included = update_screen_only = 0;
+   if (Conf.pagers.snap && p->desktop == DesksGetCurrent())
+     {
+       /* Update from screen unless update area is entirely off-screen */
+       if (!(p->x2 <= vx || p->y2 <= vy ||
+             p->x1 >= vx + VRoot.w || p->y1 >= vy + VRoot.h))
+          update_screen_included = 1;
+
+       /* Check if update area is entirely on-screen */
+       if (p->x1 >= vx && p->y1 >= vy &&
+           p->x2 <= vx + VRoot.w && p->y2 <= vy + VRoot.h)
+          update_screen_only = 1;
+     }
+
+   if (update_screen_only)
+      goto do_screen_update;
+
    for (y = 0; y < ay; y++)
      {
        for (x = 0; x < ax; x++)
-          XCopyArea(disp, p->bgpmap, p->pmap, gc, 0, 0, p->dw, p->dh,
-                    x * p->dw, y * p->dh);
+         {
+#if 0                          /* Skip? */
+            if (update_screen_included && x == cx && y == cy)
+               continue;
+#endif
+            XCopyArea(disp, p->bgpmap, p->pmap, gc, 0, 0, p->dw, p->dh,
+                      x * p->dw, y * p->dh);
+         }
      }
 
    lst = EwinListGetForDesk(&num, p->desktop);
@@ -337,11 +345,13 @@
        if (!EoIsShown(ewin))
           continue;
 
-       wx = ((EoGetX(ewin) + (cx * VRoot.w)) * (p->w / ax)) / VRoot.w;
-       wy = ((EoGetY(ewin) + (cy * VRoot.h)) * (p->h / ay)) / VRoot.h;
-       ww = ((EoGetW(ewin)) * (p->w / ax)) / VRoot.w;
-       wh = ((EoGetH(ewin)) * (p->h / ay)) / VRoot.h;
+       wx = (EwinGetVX(ewin) * p->dw) / VRoot.w;
+       wy = (EwinGetVY(ewin) * p->dh) / VRoot.h;
+       ww = (EoGetW(ewin) * p->dw) / VRoot.w;
+       wh = (EoGetH(ewin) * p->dh) / VRoot.h;
+
        PagerEwinUpdateMini(p, ewin);
+
        if (ewin->mini_pmm.pmap)
          {
             if (ewin->mini_pmm.mask)
@@ -363,30 +373,46 @@
          }
      }
 
-   EClearWindow(p->win);
-
-   EFreeGC(gc);
-}
-
-static void
-doPagerUpdate(Pager * p)
-{
-   int                 cx, cy;
-   EWin               *const *lst;
-   int                 i, num;
-
-   p->update_phase = 0;
-   DeskGetArea(p->desktop, &cx, &cy);
+   if (!update_screen_included)
+     {
+       EClearWindow(p->win);
+       goto done;
+     }
 
+ do_screen_update:
    /* Update pager area by snapshotting entire screen */
    ScaleRect(VRoot.win, p->pmap, NULL, 0, 0, VRoot.w, VRoot.h, cx * p->dw,
             cy * p->dh, p->dw, p->dh, Conf.pagers.hiq);
+   p->update_phase = 0;
+
    EClearWindow(p->win);
 
    /* Update ewin snapshots */
    lst = EwinListGetForDesk(&num, p->desktop);
    for (i = 0; i < num; i++)
       PagerEwinUpdateFromPager(p, lst[i]);
+
+ done:
+   p->x1 = p->y1 = 99999;
+   p->x2 = p->y2 = -99999;
+
+   EFreeGC(gc);
+}
+
+static void
+PagerUpdate(Pager * p, int x1, int y1, int x2, int y2)
+{
+   if (p->x1 > x1)
+      p->x1 = x1;
+   if (p->y1 > y1)
+      p->y1 = y1;
+   if (p->x2 < x2)
+      p->x2 = x2;
+   if (p->y2 < y2)
+      p->y2 = y2;
+
+   p->do_update = 1;
+   pager_update_pending = 1;
 }
 
 static void
@@ -418,6 +444,9 @@
    GC                  gc;
    Background         *bg;
 
+   p->x1 = p->y1 = 0;
+   p->x2 = p->y2 = 99999;
+
    pmap = p->bgpmap;
    if (pmap != None)
       EFreePixmap(pmap);
@@ -649,67 +678,37 @@
 }
 
 static void
-RedrawPagersForDesktop(int d)
+PagersUpdate(int d, int x1, int y1, int x2, int y2)
 {
    Pager             **pl;
    int                 i, num;
 
-   if (!Conf.pagers.enable)
-      return;
-
    pl = PagersForDesktop(d, &num);
    if (!pl)
       return;
 
    for (i = 0; i < num; i++)
-      PagerRedraw(pl[i]);
+      PagerUpdate(pl[i], x1, y1, x2, y2);
 
    Efree(pl);
 }
 
 static void
-UpdatePagersForDesktop(int d)
+PagerCheckUpdate(Pager * p)
 {
-   Pager             **pl;
-   int                 i, num;
-
-   if (!Conf.pagers.enable)
-      return;
-
-   pl = PagersForDesktop(d, &num);
-   if (!pl)
+   if (Mode.mode != MODE_NONE)
       return;
 
-   for (i = 0; i < num; i++)
-      PagerUpdate(pl[i]);
-
-   Efree(pl);
-}
-
-static void
-PagerCheckUpdate(Pager * p)
-{
    if (p->do_newbg)
      {
        PagerUpdateBg(p);
-       p->do_update = p->do_redraw = 1;
+       p->do_update = 1;
      }
 
-   if (p->desktop == DesksGetCurrent() && Conf.pagers.snap)
-     {
-       if (p->do_redraw)
-          doPagerRedraw(p);
-       /* FIXME - We should update only if current area has changed. */
-       if (p->do_redraw || p->do_update)
-          doPagerUpdate(p);
-     }
-   else
-     {
-       if (p->do_redraw || p->do_update)
-          doPagerRedraw(p);
-     }
+   if (p->do_update)
+      doPagerUpdate(p);
 
-   p->do_newbg = p->do_redraw = p->do_update = 0;
+   p->do_newbg = p->do_update = 0;
 }
 
 static void
@@ -734,23 +733,21 @@
 static void
 PagerEwinUpdateFromPager(Pager * p, EWin * ewin)
 {
-   int                 x, y, w, h, ax, ay, cx, cy;
+   int                 x, y, w, h;
    static GC           gc = 0;
 
-   if (!Conf.pagers.snap)
-     {
-       PagerEwinUpdateMini(p, ewin);
-       return;
-     }
-   if (!Conf.pagers.enable)
+   if (!EoIsShown(ewin) || !EwinIsOnScreen(ewin))
       return;
 
-   GetAreaSize(&ax, &ay);
-   DeskGetArea(p->desktop, &cx, &cy);
-   x = ((EoGetX(ewin) + (cx * VRoot.w)) * (p->w / ax)) / VRoot.w;
-   y = ((EoGetY(ewin) + (cy * VRoot.h)) * (p->h / ay)) / VRoot.h;
-   w = ((EoGetW(ewin)) * (p->w / ax)) / VRoot.w;
-   h = ((EoGetH(ewin)) * (p->h / ay)) / VRoot.h;
+   x = EwinGetVX(ewin);
+   y = EwinGetVY(ewin);
+   w = EoGetW(ewin);
+   h = EoGetH(ewin);
+   x = (x * p->dw) / VRoot.w;
+   y = (y * p->dh) / VRoot.h;
+   w = (w * p->dw) / VRoot.w;
+   h = (h * p->dh) / VRoot.h;
+
    if (!gc)
       gc = ECreateGC(p->pmap, 0, NULL);
 
@@ -768,6 +765,10 @@
        ewin->mini_pmm.pmap = ECreatePixmap(p->win, w, h, VRoot.depth);
        ewin->mini_pmm.mask = None;
      }
+
+   if (!ewin->mini_pmm.pmap)
+      return;
+
    XCopyArea(disp, p->pmap, ewin->mini_pmm.pmap, gc, x, y, w, h, 0, 0);
 
    if (hiwin && ewin == hiwin->ewin)
@@ -777,41 +778,30 @@
 static void
 PagersUpdateEwin(EWin * ewin, int gone)
 {
+   int                 desk;
+
    if (!Conf.pagers.enable)
       return;
 
-#if 1                          /* FIXME - Can be optimized - Later */
-   gone = 1;
-#endif
-   if (gone)
-     {
-       RedrawPagersForDesktop(EoGetDesk(ewin));
-       return;
-     }
-
-   if (Mode.mode != MODE_NONE || !EoIsShown(ewin))
+   if (!gone && (!EoIsShown(ewin) || ewin->st.animated))
       return;
 
-   if ((EoGetX(ewin) < 0) || (EoGetY(ewin) < 0)
-       || ((EoGetX(ewin) + EoGetW(ewin)) > VRoot.w)
-       || ((EoGetY(ewin) + EoGetH(ewin)) > VRoot.h))
-      RedrawPagersForDesktop(EoGetDesk(ewin));
-   else
-      UpdatePagersForDesktop(EoGetDesk(ewin));
+   desk = (EoIsFloating(ewin)) ? DesksGetCurrent() : EoGetDesk(ewin);
+   PagersUpdate(desk, EwinGetVX(ewin), EwinGetVY(ewin),
+               EwinGetVX2(ewin), EwinGetVY2(ewin));
 }
 
 static EWin        *
 EwinInPagerAt(Pager * p, int x, int y)
 {
-   int                 wx, wy, ww, wh, ax, ay, cx, cy;
    EWin               *const *lst;
    int                 i, num;
 
    if (!Conf.pagers.enable)
       return NULL;
 
-   GetAreaSize(&ax, &ay);
-   DeskGetArea(p->desktop, &cx, &cy);
+   x = (x * VRoot.w) / p->dw;
+   y = (y * VRoot.h) / p->dh;
 
    lst = EwinListGetForDesk(&num, p->desktop);
    for (i = 0; i < num; i++)
@@ -819,41 +809,24 @@
        EWin               *ewin;
 
        ewin = lst[i];
-       if (!ewin->iconified && EoIsShown(ewin))
-         {
-            wx = ((EoGetX(ewin) + (cx * VRoot.w)) * (p->w / ax)) / VRoot.w;
-            wy = ((EoGetY(ewin) + (cy * VRoot.h)) * (p->h / ay)) / VRoot.h;
-            ww = ((EoGetW(ewin)) * (p->w / ax)) / VRoot.w;
-            wh = ((EoGetH(ewin)) * (p->h / ay)) / VRoot.h;
-            if ((x >= wx) && (y >= wy) && (x < (wx + ww)) && (y < (wy + wh)))
-               return ewin;
-         }
+       if (!EoIsShown(ewin))
+          continue;
+
+       if (x >= EwinGetVX(ewin) && y >= EwinGetVY(ewin) &&
+           x < EwinGetVX2(ewin) && y < EwinGetVY2(ewin))
+          return ewin;
      }
 
    return NULL;
 }
 
 static void
-PagerAreaAt(Pager * p, int x, int y, int *ax, int *ay)
-{
-   int                 asx, asy;
-
-   if (!Conf.pagers.enable)
-      return;
-
-   GetAreaSize(&asx, &asy);
-   *ax = x / (p->w / asx);
-   *ay = y / (p->h / asy);
-}
-
-static void
 PagerMenuShow(Pager * p, int x, int y)
 {
    static Menu        *p_menu = NULL, *pw_menu = NULL;
    MenuItem           *mi;
    EWin               *ewin;
    char                s[1024];
-   int                 ax, ay;
 
    if (!Conf.pagers.enable)
       return;
@@ -887,7 +860,6 @@
        return;
      }
 
-   PagerAreaAt(p, x, y, &ax, &ay);
    if (p_menu)
       MenuDestroy(p_menu);
    p_menu = MenuCreate("__DESK_MENU", _("Desktop Options"), NULL, NULL);
@@ -1024,7 +996,7 @@
 {
    PagerHiwin         *phi = hiwin;
    Window              dw;
-   int                 wx, wy, ww, wh, ax, ay, cx, cy;
+   int                 wx, wy, ww, wh;
 
    PagerHiwinHide(p);
 
@@ -1035,13 +1007,10 @@
           return;
      }
 
-   GetAreaSize(&ax, &ay);
-   DeskGetArea(p->desktop, &cx, &cy);
-
-   wx = ((EoGetX(ewin) + (cx * VRoot.w)) * (p->w / ax)) / VRoot.w;
-   wy = ((EoGetY(ewin) + (cy * VRoot.h)) * (p->h / ay)) / VRoot.h;
-   ww = ((EoGetW(ewin)) * (p->w / ax)) / VRoot.w;
-   wh = ((EoGetH(ewin)) * (p->h / ay)) / VRoot.h;
+   wx = (EwinGetVX(ewin) * p->dw) / VRoot.w;
+   wy = (EwinGetVY(ewin) * p->dh) / VRoot.h;
+   ww = (EoGetW(ewin) * p->dw) / VRoot.w;
+   wh = (EoGetH(ewin) * p->dh) / VRoot.h;
    XTranslateCoordinates(disp, p->win, VRoot.win, 0, 0, &px, &py, &dw);
    EoMoveResize(phi, px + wx, py + wy, ww, wh);
    ESetWindowBackgroundPixmap(EoGetWin(phi), ewin->mini_pmm.pmap);
@@ -1366,16 +1335,14 @@
      }
    else if ((in == PAGER_EVENT_MOTION) && (!hiwin || ewin != hiwin->ewin))
      {
-       int                 wx, wy, ww, wh, ax, ay, cx, cy, px, py;
+       int                 wx, wy, ww, wh, px, py;
 
        PagerHiwinHide(p);
-       GetAreaSize(&ax, &ay);
-       DeskGetArea(p->desktop, &cx, &cy);
 
-       wx = ((EoGetX(ewin) + (cx * VRoot.w)) * (p->w / ax)) / VRoot.w;
-       wy = ((EoGetY(ewin) + (cy * VRoot.h)) * (p->h / ay)) / VRoot.h;
-       ww = ((EoGetW(ewin)) * (p->w / ax)) / VRoot.w;
-       wh = ((EoGetH(ewin)) * (p->h / ay)) / VRoot.h;
+       wx = (EwinGetVX(ewin) * p->dw) / VRoot.w;
+       wy = (EwinGetVY(ewin) * p->dh) / VRoot.h;
+       ww = (EoGetW(ewin) * p->dw) / VRoot.w;
+       wh = (EoGetH(ewin) * p->dh) / VRoot.h;
        XTranslateCoordinates(disp, p->win, VRoot.win, 0, 0, &px, &py, &cw);
        PagerHiwinZoom(p, ewin, px + wx, py + wy, ww, wh);
        PagerShowTt(ewin);
@@ -1563,11 +1530,10 @@
 PagerEwinMove(Pager * p __UNUSED__, Pager * pd)
 {
    int                 x, y, dx, dy, px, py;
-   int                 ax, ay, cx, cy;
+   int                 cx, cy;
    Window              child;
    PagerHiwin         *phi = hiwin;
 
-   GetAreaSize(&ax, &ay);
    DeskGetArea(pd->desktop, &cx, &cy);
 
    /* Delta in pager coords */
@@ -1582,8 +1548,8 @@
 
    /* Find real window position */
    XTranslateCoordinates(disp, EoGetWin(phi), pd->win, 0, 0, &px, &py, &child);
-   x = (px * ax * VRoot.w) / pd->w - cx * VRoot.w;
-   y = (py * ay * VRoot.h) / pd->h - cy * VRoot.h;
+   x = (px * VRoot.w) / pd->dw - cx * VRoot.w;
+   y = (py * VRoot.h) / pd->dh - cy * VRoot.h;
 
    /* Move all group members */
    EwinGroupMove(phi->ewin, pd->desktop, x, y);
@@ -1658,7 +1624,7 @@
    Window              win = ev->xbutton.window, child;
    int                 i, num, px, py, in_pager, in_vroot;
    EWin               *ewin, *ewin2, **gwins;
-   int                 x, y, pax, pay;
+   int                 x, y;
    int                 mode_was;
 
    mode_was = Mode.mode;
@@ -1681,16 +1647,13 @@
      {
        if (win != Mode.last_bpress || !in_pager)
           goto done;
-       PagerAreaAt(p, px, py, &pax, &pay);
        DeskGoto(p->desktop);
        if (p->desktop != DesksGetCurrent())
           SoundPlay("SOUND_DESKTOP_SHUT");
-       SetCurrentArea(pax, pay);
+       SetCurrentArea(px / p->dw, py / p->dh);
      }
    else if (((int)ev->xbutton.button == Conf.pagers.win_button))
      {
-       int                 prev_desk = -1;
-
        ewin = PagerHiwinEwin(1);
 
        switch (mode_was)
@@ -1699,9 +1662,6 @@
             if (!ewin)
                break;
 
-            /* Remember old desk for the dragged window */
-            prev_desk = EoGetDesk(ewin);
-
             /* Find which pager or iconbox we are in (if any) */
             ewin2 = GetEwinPointerInClient();
             if ((ewin2) && (ewin2->type == EWIN_TYPE_PAGER))
@@ -1753,9 +1713,8 @@
          default:
             if (!in_pager)
                break;
-            PagerAreaAt(p, px, py, &pax, &pay);
             DeskGoto(p->desktop);
-            SetCurrentArea(pax, pay);
+            SetCurrentArea(px / p->dw, py / p->dh);
             ewin2 = EwinInPagerAt(p, px, py);
             if (ewin2)
               {
@@ -2261,9 +2220,10 @@
        PagersReconfigure();
        break;
      case ESIGNAL_AREA_SWITCH_DONE:
-       RedrawPagersForDesktop((int)prm);
+       PagersUpdate(DesksGetCurrent(), 0, 0, 99999, 99999);
        UpdatePagerSel();
        break;
+
      case ESIGNAL_DESK_ADDED:
        NewPagerForDesktop((int)(prm));
        break;
@@ -2273,16 +2233,14 @@
      case ESIGNAL_DESK_SWITCH_DONE:
        UpdatePagerSel();
        break;
-     case ESIGNAL_BACKGROUND_CHANGE:
-       PagersUpdateBackground((int)prm);
-       break;
-     case ESIGNAL_DESK_CHANGE:
-       RedrawPagersForDesktop((int)prm);
-       UpdatePagerSel();
-       break;
      case ESIGNAL_DESK_RESIZE:
        PagersReconfigure();
        break;
+
+     case ESIGNAL_BACKGROUND_CHANGE:
+       PagersUpdateBackground((int)prm);
+       break;
+
      case ESIGNAL_EWIN_UNMAP:
        PagersUpdateEwin(prm, 1);
        break;




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to