From 7d9b1ed264113e5ec9998046f4c3151de0a56878 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Fri, 2 May 2008 12:10:51 +0000 Subject: [PATCH] fixes #1218 svn changeset:4316/svn branch:trunk --- .../terminal/gwt/client/ui/IScrollTable.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) 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); + } + } + }); } } -- 2.39.5