Revision: 4642
          http://sourceforge.net/p/vexi/code/4642
Author:   clrg
Date:     2014-01-18 00:19:12 +0000 (Sat, 18 Jan 2014)
Log Message:
-----------
Fix / refactoring

Modified Paths:
--------------
    branches/vexi4c/org.vexi-core.main/src/main/jpp/org/vexi/ui/Box.jpp

Modified: branches/vexi4c/org.vexi-core.main/src/main/jpp/org/vexi/ui/Box.jpp
===================================================================
--- branches/vexi4c/org.vexi-core.main/src/main/jpp/org/vexi/ui/Box.jpp 
2014-01-14 12:50:06 UTC (rev 4641)
+++ branches/vexi4c/org.vexi-core.main/src/main/jpp/org/vexi/ui/Box.jpp 
2014-01-18 00:19:12 UTC (rev 4642)
@@ -583,6 +583,13 @@
     public final int getHeight() { return height; }
     public final int nominalWidth() { return min(maxwidth, max(contentwidth, 
minwidth)); }
     public final int nominalHeight() { return min(maxheight, 
max(contentheight, minheight)); }
+    
+    private final int constrainToWidth(int testwidth, Box c) {
+       return max(testwidth, c.nominalWidth() + max(padding.left, 
c.margin.left) + max(padding.right, c.margin.right));
+    }
+    private final int constrainToHeight(int testheight, Box c) {
+       return max(testheight, c.nominalHeight() + max(padding.top, 
c.margin.top) + max(padding.bottom, c.margin.bottom));
+    }
 
 
     // Reflow/rendering Pipeline //////////////////////////////////////
@@ -650,7 +657,7 @@
             //#repeat width/height HORIZONTAL/VERTICAL Width/Height left/top 
right/bottom
             if (test(ORIENT) == HORIZONTAL) {
                 // accumulate child contentwidth
-                int prior_margin = 0;
+                int prior_margin = padding.left;
                 box_spacing = 0;
                 for (Box c = getChild(i=0); c != null; c = getChild(++i)) {
                     if (!c.test(DISPLAY)) {
@@ -661,14 +668,14 @@
                     new_contentwidth += c.nominalWidth() + spacing;
                     prior_margin = c.margin.right;
                 }
-                new_contentwidth += prior_margin;
+                new_contentwidth += max(prior_margin, padding.right);
             } else {
                 // maximum child contentwidth
                 for (Box c = getChild(i=0); c != null; c = getChild(++i)) {
                     if (!c.test(DISPLAY)) {
                         continue;
                     }
-                    new_contentwidth = max(new_contentwidth, c.nominalWidth() 
+ c.margin.left + c.margin.right);
+                    new_contentwidth = constrainToWidth(new_contentwidth, c);
                 }
             }
             //#end
@@ -678,8 +685,8 @@
                 if (!c.test(DISPLAY)) {
                     continue;
                 }
-                new_contentwidth = max(new_contentwidth, c.nominalWidth() + 
c.margin.left + c.margin.right);
-                new_contentheight = max(new_contentheight, c.nominalHeight() + 
c.margin.top + c.margin.bottom);
+                new_contentwidth = constrainToWidth(new_contentwidth, c);
+                new_contentheight = constrainToHeight(new_contentheight, c);
             }
         }
         
@@ -783,7 +790,7 @@
                                 continue;
                             }
                             // height, y
-                            child_height = getTargetHeight(height);
+                            child_height = child.getTargetHeight(height);
                             child_y = getTargetY(height, child_height, top, 
bottom);
                             // width, x
                             child_width = child.nominalWidth();
@@ -921,7 +928,7 @@
 
                 } else {
                     // vertical stacking - mirrors horizontal stacking code 
[see for comments]
-                    if (0 >= height - contentheight) {
+                    if (contentheight >= height) {
                         // simple case - no slack
                         int i = 0;
                         int prior_margin = padding.top;
@@ -936,7 +943,7 @@
                             child_height = child.nominalHeight();
                             child_y += max(prior_margin, child.margin.top);
                             child.tryMoveAndResize(child_x, child_y, 
child_width, child_height, clean);
-                            child_y += child.contentheight;
+                            child_y += child_height;
                             prior_margin = child.margin.bottom;
                         }
 
@@ -1024,7 +1031,7 @@
                                     if (!child.test(DISPLAY)) {
                                         continue;
                                     }
-                                    Log.system.error(this, "Child "+i+": 
"+child.contentheight+", "+child.maxheight+", "+child.test(VSHRINK));
+                                    Log.system.error(this, "Child "+i+": 
"+child.nominalHeight()+", "+child.maxheight+", "+child.test(VSHRINK));
                                 }
                             }
                         }
@@ -1045,6 +1052,7 @@
                             // width, x
                             child_width = child.getTargetWidth(width);
                             child_x = child.getTargetX(width, child_width, 
left, right);
+                            
                             // height, y
                             totalsize += (float)max(prior_margin, 
child.margin.top);
                             child_y = offset_y + (int)(totalsize+0.5);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to