Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        ewin-ops.c 


Log Message:
Prevent shading windows from going off-screen.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewin-ops.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ewin-ops.c  21 Jan 2005 20:34:41 -0000      1.6
+++ ewin-ops.c  22 Jan 2005 14:05:51 -0000      1.7
@@ -205,12 +205,23 @@
             sw *= Conf.desks.areas_nx;
             sh *= Conf.desks.areas_ny;
          }
-       dx = EoGetW(ewin) / 4;
-       if (dx > 8)
-          dx = 8;
-       dy = EoGetH(ewin) / 4;
-       if (dy > 8)
-          dy = 8;
+
+       if (ewin->shaded)
+         {
+            /* Keep shaded windows entirely on-screen */
+            dx = EoGetW(ewin);
+            dy = EoGetH(ewin);
+         }
+       else
+         {
+            /* Keep at least 8 pixels on-screen */
+            dx = EoGetW(ewin) / 4;
+            if (dx > 8)
+               dx = 8;
+            dy = EoGetH(ewin) / 4;
+            if (dy > 8)
+               dy = 8;
+         }
 
        if (x < x0 - EoGetW(ewin) + dx)
           x = x0 - EoGetW(ewin) + dx;
@@ -716,6 +727,7 @@
 
    switch (ewin->border->shadedir)
      {
+     default:
      case 0:
        att.win_gravity = EastGravity;
        XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
@@ -751,13 +763,7 @@
                  k = ETimedLoopNext();
               }
          }
-       ewin->shaded = 2;
        EoSetW(ewin, b);
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       ExMoveResizeWindow(&ewin->o, EoGetX(ewin), EoGetY(ewin),
-                          EoGetW(ewin), EoGetH(ewin));
-       EwinBorderCalcSizes(ewin);
-       ecore_x_sync();
        break;
      case 1:
        att.win_gravity = WestGravity;
@@ -797,14 +803,8 @@
                  k = ETimedLoopNext();
               }
          }
-       ewin->shaded = 2;
        EoSetW(ewin, b);
        EoSetX(ewin, d);
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       ExMoveResizeWindow(&ewin->o, EoGetX(ewin), EoGetY(ewin),
-                          EoGetW(ewin), EoGetH(ewin));
-       EwinBorderCalcSizes(ewin);
-       ecore_x_sync();
        break;
      case 2:
        att.win_gravity = SouthGravity;
@@ -843,13 +843,7 @@
                  k = ETimedLoopNext();
               }
          }
-       ewin->shaded = 2;
        EoSetH(ewin, b);
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       ExMoveResizeWindow(&ewin->o, EoGetX(ewin), EoGetY(ewin),
-                          EoGetW(ewin), EoGetH(ewin));
-       EwinBorderCalcSizes(ewin);
-       ecore_x_sync();
        break;
      case 3:
        att.win_gravity = SouthGravity;
@@ -889,19 +883,17 @@
                  k = ETimedLoopNext();
               }
          }
-       ewin->shaded = 2;
        EoSetH(ewin, b);
        EoSetY(ewin, d);
-       EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
-       ExMoveResizeWindow(&ewin->o, EoGetX(ewin), EoGetY(ewin),
-                          EoGetW(ewin), EoGetH(ewin));
-       EwinBorderCalcSizes(ewin);
-       ecore_x_sync();
-       break;
-     default:
        break;
      }
 
+   ewin->shaded = 2;
+   EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1);
+   EwinBorderCalcSizes(ewin);
+   MoveEwin(ewin, EoGetX(ewin), EoGetY(ewin));
+   ecore_x_sync();
+
 #if 0
    ecore_x_ungrab();
    Eprintf("EwinShade-E\n");
@@ -946,6 +938,7 @@
 
    switch (ewin->border->shadedir)
      {
+     default:
      case 0:
        att.win_gravity = EastGravity;
        XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att);
@@ -991,9 +984,6 @@
               }
          }
        EoSetW(ewin, b);
-       MoveResizeEwin(ewin, EoGetX(ewin), EoGetY(ewin), ewin->client.w,
-                      ewin->client.h);
-       ecore_x_sync();
        break;
      case 1:
        att.win_gravity = WestGravity;
@@ -1040,9 +1030,6 @@
          }
        EoSetW(ewin, b);
        EoSetX(ewin, d);
-       MoveResizeEwin(ewin, EoGetX(ewin), EoGetY(ewin), ewin->client.w,
-                      ewin->client.h);
-       ecore_x_sync();
        break;
      case 2:
        att.win_gravity = SouthGravity;
@@ -1089,9 +1076,6 @@
               }
          }
        EoSetH(ewin, b);
-       MoveResizeEwin(ewin, EoGetX(ewin), EoGetY(ewin), ewin->client.w,
-                      ewin->client.h);
-       ecore_x_sync();
        break;
      case 3:
        att.win_gravity = SouthGravity;
@@ -1138,14 +1122,13 @@
          }
        EoSetH(ewin, b);
        EoSetY(ewin, d);
-       MoveResizeEwin(ewin, EoGetX(ewin), EoGetY(ewin), ewin->client.w,
-                      ewin->client.h);
-       ecore_x_sync();
-       break;
-     default:
        break;
      }
 
+   MoveResizeEwin(ewin, EoGetX(ewin), EoGetY(ewin), ewin->client.w,
+                 ewin->client.h);
+   ecore_x_sync();
+
 #if 0
    ecore_x_ungrab();
    Eprintf("EwinUnShade-E\n");




-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to