Revision: 3368
http://vexi.svn.sourceforge.net/vexi/?rev=3368&view=rev
Author: clrg
Date: 2009-01-25 20:26:31 +0000 (Sun, 25 Jan 2009)
Log Message:
-----------
Improved table scrolling
Modified Paths:
--------------
trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/table.t
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/table.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/table.t
2009-01-23 05:06:04 UTC (rev 3367)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/table.t
2009-01-25 20:26:31 UTC (rev 3368)
@@ -88,11 +88,12 @@
* - tempfirst : the first index of any temporary row data
* - tempfinal : the final index of any temporary row data
*/
+ var rows = [];
var loadDataFunc = function(data, index, tempindex, tempfinal) {
if (data == null) throw "tried to load null data";
var b = th_body;
var n = b.numchildren;
- var rows = [];
+ var rlen = 0;
var check = {};
var select;
// find unassigned rows
@@ -104,19 +105,17 @@
check[r_ind] = r;
// discard rows that fall outside view
} else if (viewindex>r_ind or r_ind>viewfinal) {
- rows[rows.length] = r;
+ rows[rlen++] = r;
// check for duplicates and discard
} else if (check[r_ind]) {
if (vexi.debug) vexi.log.info("duplicate row: "+r_ind);
- rows[rows.length] = r;
+ rows[rlen++] = r;
// row falls within view bounds
} else {
check[r_ind] = r;
if (selectedindex==r_ind) selected = r;
}
}
- var j = 0;
- var l = rows.length;
// limit display to those visible
var start = viewindex>index?viewindex-index:0;
var count = data.length;
@@ -126,7 +125,7 @@
var r_ind = index+i;
var r = check[r_ind];
if (r==null) {
- r = j>=l ? createRow() : rows[j++];
+ r = rlen>0 ? rows[--rlen] : createRow();
r.rowindex = r_ind;
r.rowfill = (r_ind%2) ? fill2 : fill1;
r.height = rowheight;
@@ -141,7 +140,7 @@
r.value = data[i];
}
// clear up unused rows
- while (l>j) rows[j++].thisbox = null;
+ while (rlen>0) rows[--rlen].thisbox = null;
// no temporary rows - mark all as valid
if (tempindex == null) {
activeindex = viewindex;
@@ -153,11 +152,11 @@
// temporary rows at the start
} else if (tempindex == activeindex) {
activeindex = tempfinal;
- activefinal = viewfinal-1;
+ activefinal = viewfinal;
// temporary rows at the end
} else {
activeindex = viewindex;
- activefinal = tempfinal-1;
+ activefinal = tempfinal;
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn