From: Matti Tahvonen Date: Fri, 2 May 2008 12:10:51 +0000 (+0000) Subject: fixes #1218 X-Git-Tag: 6.7.0.beta1~4831 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7d9b1ed264113e5ec9998046f4c3151de0a56878;p=vaadin-framework.git fixes #1218 svn changeset:4316/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java index 3a6375a9c0..87ce1e1d5d 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java @@ -1664,6 +1664,41 @@ public class IScrollTable extends Composite implements Table, ScrollListener, lastRendered++; } fixSpacers(); + DeferredCommand.addCommand(new Command() { + public void execute() { + // this may be a new set of rows due content change, + // ensure we have proper cache rows + int reactFirstRow = (int) (firstRowInViewPort - pageLength + * CACHE_REACT_RATE); + int reactLastRow = (int) (firstRowInViewPort + + pageLength + pageLength * CACHE_REACT_RATE); + if (reactFirstRow < 0) { + reactFirstRow = 0; + } + if (reactLastRow > totalRows) { + reactLastRow = totalRows - 1; + } + if (reactFirstRow < firstRendered + || reactLastRow > lastRendered) { + // re-fetch full cache area + reactFirstRow = (int) (firstRowInViewPort - pageLength + * CACHE_RATE); + reactLastRow = (int) (firstRowInViewPort + + pageLength + pageLength * CACHE_RATE); + if (reactFirstRow < 0) { + reactFirstRow = 0; + } + if (reactLastRow > totalRows) { + reactLastRow = totalRows - 1; + } + // fetch some lines before + rowRequestHandler.setReqFirstRow(reactFirstRow); + rowRequestHandler.setReqRows((int) (2 * pageLength + * CACHE_RATE + pageLength)); + rowRequestHandler.deferRowFetch(1); + } + } + }); } }