Revision: 3488 http://vexi.svn.sourceforge.net/vexi/?rev=3488&view=rev Author: clrg Date: 2009-04-25 00:01:22 +0000 (Sat, 25 Apr 2009)
Log Message: ----------- Finish fixing copy/paste issues Modified Paths: -------------- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/text/edit.t Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/text/edit.t =================================================================== --- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/text/edit.t 2009-04-24 17:29:20 UTC (rev 3487) +++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/text/edit.t 2009-04-25 00:01:22 UTC (rev 3488) @@ -410,7 +410,7 @@ var _cp = cPos; var _sp = sPos; - // flip vars if needed + // flip vars so s->c is always true; simplifies it var tmp; if (sbi==cbi?(cwi==swi?_sp>_cp:swi>cwi):sbi>cbi) { tmp = cbi; cbi = sbi; sbi = tmp; // block @@ -419,39 +419,45 @@ tmp = _cw; _cw = _sw; _sw = tmp; // *Word tmp = _cb; _cb = _sb; _sb = tmp; // *Block } - - // grab text from s->c - var str = ""; // single word select - if (_sw != null and _sw == _cw) { - str = str + _sw.text.substring(_sp, _cp); + if (_sw != null and _sw == _cw) + return _sw.text.substring(_sp, _cp); + // grab text from s->c + var str = []; + var j = 0; + // single block select - } else if (_sb == _cb) { + if (_sb == _cb) { if (_sw == null) return ""; - str = str + _sw.text.substring(_sp, _sw.text.length); - var i2 = _sb.indexof(_cw); - for (var i = _sb.indexof(_sw)+1; i2 > i; i++) str = str + _sb[i].text; - str = str + _cw.text.substring(0, _cp); + str[j++] = _sw.text.substring(_sp, _sw.text.length); + var cwi = _sb.indexof(_cw); + for (var i = _sb.indexof(_sw)+1; cwi > i; i++) + str[j++] = _sb[i].text; + str[j++] = _cw.text.substring(0, _cp); // multi-block select } else { if (_sw) { - str = str + _sw.text.substring(_sp); - str = str + static.getTextFromWord(_sb, _sb.indexof(_sw)) + '\n'; + str[j++] = _sw.text.substring(_sp); + str[j++] = static.getTextFromWord(_sb, _sb.indexof(_sw)); } + str[j++] = '\n'; if (thisbox.indexof(_cb) > thisbox.indexof(_sb)+1) { var b2 = thisbox.indexof(_cb); - for (var b = thisbox.indexof(_sb)+1; b2 > b; b++) - str = str + thisbox[b].text + '\n'; + for (var b = thisbox.indexof(_sb)+1; b2 > b; b++) { + str[j++] = thisbox[b].text; + str[j++] = '\n'; + } } if (_cw) { - str = str + static.getTextUpToWord(_cb, _cb.indexof(_cw)) + _cw.text.substring(0, _cp); + str[j++] = static.getTextUpToWord(_cb, _cb.indexof(_cw)); + str[j++] = _cw.text.substring(0, _cp); } } - return str; + return str.join(""); } /** inserts text at the point cBlock.cWord[cPos] */ @@ -511,8 +517,8 @@ cBlock.text = head ? head + blocks[0] : blocks[0]; // intervening portion of blocks var tmpb; - var l = blocks.length; - for (var i=1; l>i+1; i++) { + var l = blocks.length-1; + for (var i=1; l>i; i++) { tmpb = .block(vexi.box, blockargs); tmpb.text = blocks[i]; thisbox[cbi+i] = tmpb; @@ -523,11 +529,11 @@ // same text twice to a block with the addition // of the 'tail' text the second time tmpb = .block(vexi.box, blockargs); - tmpb.text = blocks[l-1]; + tmpb.text = blocks[l]; cwi = tmpb.numchildren ? tmpb.numchildren-1 : 0; - if (tail) tmpb.text = blocks[l-1] + tail; + if (tail) tmpb.text = blocks[l] + tail; cwt = tmpb[cwi]; cwt = cwt ? cwt.text : ""; - thisbox[cbi+i] = tmpb; + thisbox[cbi+l] = tmpb; cBlock = tmpb; cWord = tmpb[cwi]; } @@ -539,7 +545,7 @@ else if (cwi == cBlock.numchildren-1) cPos = cwt.length; else { - cWord = tmpb[cwi+1]; + cWord = cBlock[cwi+1]; cPos = 0; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn