Revision: 4760 http://sourceforge.net/p/vexi/code/4760 Author: mkpg2 Date: 2015-01-26 01:32:52 +0000 (Mon, 26 Jan 2015) Log Message: ----------- Fix. Reflow logic.
Modified Paths: -------------- branches/vexi3/org.vexi-vexi.widgets/src_main/vexi/layout/flow.t Modified: branches/vexi3/org.vexi-vexi.widgets/src_main/vexi/layout/flow.t =================================================================== --- branches/vexi3/org.vexi-vexi.widgets/src_main/vexi/layout/flow.t 2015-01-25 22:38:44 UTC (rev 4759) +++ branches/vexi3/org.vexi-vexi.widgets/src_main/vexi/layout/flow.t 2015-01-26 01:32:52 UTC (rev 4760) @@ -24,44 +24,64 @@ var dirty; const max = vexi.math.max; - const doReflow = function(){ - if(!visible){ + var doReflow; + const reflowTrap = function(v) { + cascade = v; + doReflow(); + }; + + var entered = false; + doReflow = function(){ +// trace(["doReflow", entered, visible, dirty]); + if(entered) { dirty = true; return; - }else{ - dirty = false; + } + entered = true; + try{ + if(!visible){ + + return; + }else{ + dirty = false; + } + + var rankSize = 0; + var offsetRank = 0; + var offset = 0; + for(var i, b in thisbox){ + var offset0 = offset; + var offsetRank1 = offsetRank; + var offset1 = offset+b[_width]; + if(offset1>thisbox[_width] and i!=0){ + offsetRank1 += rankSize; + offset0 = 0; + offset1 = b[_width]; + rankSize = 0; + } + + rankSize = max(rankSize, b[_height]); + + b[_x] = offset0; + b[_y] = offsetRank1; +// trace(i+" ("+b.x+","+b.y+") ("+b.width+","+b.height+")"); + offset = offset1; + offsetRank = offsetRank1; + + b[_width] ++= reflowTrap; + b[_height] ++= reflowTrap; + } + thisbox[_height] = offsetRank + rankSize; +// // HACK +// if(offsetRank==0 and offset==0){ +// dirty = true; +// } + }finally{ + entered = false; } - - var rankSize = 0; - var offsetRank = 0; - var offset = 0; - for(var i, b in thisbox){ - var offset0 = offset; - var offsetRank1 = offsetRank; - var offset1 = offset+b[_width]; - if(offset1>thisbox[_width] and i!=0){ - offsetRank1 += rankSize; - offset0 = 0; - offset1 = b[_width]; - rankSize = 0; - } - - rankSize = max(rankSize, b[_height]); - - b[_x] = offset0; - b[_y] = offsetRank1; - - offset = offset1; - offsetRank = offsetRank1; - } - thisbox[_height] = offsetRank + rankSize; }; - const reflowTrap = function(v) { - cascade = v; - doReflow(); - }; thisbox.orient ++= function(v){ cascade = v; @@ -78,11 +98,12 @@ _height = "width"; _width = "height"; } - - thisbox[_width] ++= reflowTrap; - thisbox[_height] --= reflowTrap; - }; + + thisbox.width ++= reflowTrap; + thisbox.height ++= reflowTrap; + + orient = "horizontal"; @@ -94,8 +115,12 @@ }; thisbox.Children ++= function(v){ + const v0 = thisbox[trapname]; + if(v0){ + v0.width --= reflowTrap; + v0.height --= reflowTrap; + } cascade = v; - doReflow(); }; </ui:box> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn