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