Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h borders.c 


Log Message:
Fix error in placement of initially shaded windows.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.190
retrieving revision 1.191
diff -u -3 -r1.190 -r1.191
--- E.h 1 Feb 2004 11:28:05 -0000       1.190
+++ E.h 1 Feb 2004 16:48:05 -0000       1.191
@@ -1752,7 +1752,6 @@
 int                 ChangeEwinWinpart(EWin * ewin, int i);
 void                DrawEwin(EWin * ewin);
 int                 ChangeEwinWinpartContents(EWin * ewin, int i);
-void                CalcEwinWinpart(EWin * ewin, int i);
 void                CalcEwinSizes(EWin * ewin);
 EWin               *Adopt(Window win);
 EWin               *AdoptInternal(Window win, Border * border, int type,
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v
retrieving revision 1.129
retrieving revision 1.130
diff -u -3 -r1.129 -r1.130
--- borders.c   1 Feb 2004 11:28:05 -0000       1.129
+++ borders.c   1 Feb 2004 16:48:05 -0000       1.130
@@ -970,7 +970,7 @@
    EDBUG_RETURN(ret);
 }
 
-void
+static void
 CalcEwinWinpart(EWin * ewin, int i)
 {
    int                 x, y, w, h, ox, oy, max, min;
@@ -2213,98 +2213,101 @@
    EDBUG_RETURN_;
 }
 
-#define DO_CALC \
-for (i = 0; i < ewin->border->num_winparts; i++) \
-ewin->bits[i].w = -2; \
-for (i = 0; i < ewin->border->num_winparts; i++) \
-if (ewin->bits[i].w == -2) \
-CalcEwinWinpart(ewin, i);
-
-#define FIND_MAX \
-*mw = 0; \
-*mh = 0; \
-for (i = 0; i < ewin->border->num_winparts; i++) \
-{ \
-       if (ewin->border->part[i].keep_for_shade) \
-       { \
-               if (*mw < (ewin->bits[i].w + ewin->bits[i].x)) \
-                       *mw = ewin->bits[i].w + ewin->bits[i].x; \
-                               if (*mh < (ewin->bits[i].h + ewin->bits[i].y)) \
-                                       *mh = ewin->bits[i].h + ewin->bits[i].y; \
-       } \
-}
-
 void
 MinShadeSize(EWin * ewin, int *mw, int *mh)
 {
-   int                 i, p;
+   int                 i, pw, ph, w, h, min_w, min_h;
    int                 leftborderwidth, rightborderwidth;
    int                 topborderwidth, bottomborderwidth;
 
-   *mw = 32;
-   *mh = 32;
+   min_w = 32;
+   min_h = 32;
+
    if (!ewin)
-      EDBUG_RETURN_;
+      goto exit;
+
+   pw = ewin->w;
+   ph = ewin->h;
+
+   for (i = 0; i < ewin->border->num_winparts; i++)
+      ewin->bits[i].w = -2;
+   for (i = 0; i < ewin->border->num_winparts; i++)
+      if (ewin->bits[i].w == -2)
+        CalcEwinWinpart(ewin, i);
+
    switch (ewin->border->shadedir)
      {
      case 0:
      case 1:
-       p = ewin->w;
        /* get the correct width, based on the borderparts that */
        /*are remaining visible */
        leftborderwidth = rightborderwidth = 0;
        for (i = 0; i < ewin->border->num_winparts; i++)
          {
-            if (ewin->border->part[i].keep_for_shade)
-              {
-                 if (ewin->border->border.left - ewin->bits[i].x >
-                     leftborderwidth)
-                    leftborderwidth =
-                       ewin->border->border.left - ewin->bits[i].x;
-                 if ((ewin->bits[i].x + ewin->bits[i].w) -
-                     (ewin->w - ewin->border->border.right) > rightborderwidth)
-                    rightborderwidth =
-                       (ewin->bits[i].x + ewin->bits[i].w) - (ewin->w -
-                                                              ewin->border->
-                                                              border.right);
-              }
+            if (!ewin->border->part[i].keep_for_shade)
+               continue;
+
+            w = ewin->border->border.left - ewin->bits[i].x;
+            if (leftborderwidth < w)
+               leftborderwidth = w;
+
+            w = ewin->bits[i].x + ewin->bits[i].w -
+               (ewin->w - ewin->border->border.right);
+            if (rightborderwidth < w)
+               rightborderwidth = w;
          }
        ewin->w = rightborderwidth + leftborderwidth;
-       DO_CALC;
-       FIND_MAX;
-       ewin->w = p;
-       DO_CALC;
        break;
      case 2:
      case 3:
-       p = ewin->h;
        topborderwidth = bottomborderwidth = 0;
        for (i = 0; i < ewin->border->num_winparts; i++)
          {
-            if (ewin->border->part[i].keep_for_shade)
-              {
-                 if (ewin->border->border.top - ewin->bits[i].y >
-                     topborderwidth)
-                    topborderwidth =
-                       ewin->border->border.top - ewin->bits[i].y;
-                 if ((ewin->bits[i].y + ewin->bits[i].h) -
-                     (ewin->h - ewin->border->border.bottom) >
-                     bottomborderwidth)
-                    bottomborderwidth =
-                       (ewin->bits[i].y + ewin->bits[i].h) - (ewin->h -
-                                                              ewin->border->
-                                                              border.bottom);
-              }
+            if (!ewin->border->part[i].keep_for_shade)
+               continue;
+
+            h = ewin->border->border.top - ewin->bits[i].y;
+            if (topborderwidth < h)
+               topborderwidth = h;
+
+            h = ewin->bits[i].y + ewin->bits[i].h -
+               (ewin->h - ewin->border->border.bottom);
+            bottomborderwidth = h;
          }
        ewin->h = bottomborderwidth + topborderwidth;
-       DO_CALC;
-       FIND_MAX;
-       ewin->h = p;
-       DO_CALC;
        break;
      default:
        break;
      }
+
+   for (i = 0; i < ewin->border->num_winparts; i++)
+      ewin->bits[i].w = -2;
+   for (i = 0; i < ewin->border->num_winparts; i++)
+      if (ewin->bits[i].w == -2)
+        CalcEwinWinpart(ewin, i);
+
+   min_w = 0;
+   min_h = 0;
+   for (i = 0; i < ewin->border->num_winparts; i++)
+     {
+       if (!ewin->border->part[i].keep_for_shade)
+          continue;
+
+       w = ewin->bits[i].x + ewin->bits[i].w;
+       if (min_w < w)
+          min_w = w;
+
+       h = ewin->bits[i].y + ewin->bits[i].h;
+       if (min_h < h)
+          min_h = h;
+     }
+
+   ewin->w = pw;
+   ewin->h = ph;
+
+ exit:
+   *mw = min_w;
+   *mh = min_h;
 }
 
 void




-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to