From 3b66c56dda138b644911f064d781a4b5c76f546a Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Mon, 25 Aug 2008 09:21:00 +0000 Subject: [PATCH] Fixes #2005 (server-side scrolling of table broken) svn changeset:5254/svn branch:trunk --- .../terminal/gwt/client/ui/IScrollTable.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 602719ac28..42e49737a8 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java @@ -74,6 +74,7 @@ public class IScrollTable extends Composite implements Table, ScrollListener, public static final char ALIGN_RIGHT = 'e'; private int firstRowInViewPort = 0; private int pageLength = 15; + private int lastRequestedFirstvisible = 0; // to detect "serverside scroll" private boolean showRowHeaders = false; @@ -169,6 +170,12 @@ public class IScrollTable extends Composite implements Table, ScrollListener, } firstvisible = uidl.hasVariable("firstvisible") ? uidl .getIntVariable("firstvisible") : 0; + if (firstvisible != lastRequestedFirstvisible) { + // received 'surprising' firstvisible from server: scroll there + firstRowInViewPort = firstvisible; + bodyContainer + .setScrollPosition(firstvisible * tBody.getRowHeight()); + } showRowHeaders = uidl.getBooleanAttribute("rowheaders"); showColHeaders = uidl.getBooleanAttribute("colheaders"); @@ -699,6 +706,9 @@ public class IScrollTable extends Composite implements Table, ScrollListener, final int firstRendered = tBody.getFirstRendered(); if (postLimit <= lastRendered && preLimit >= firstRendered) { + // remember which firstvisible we requested, in case the server has + // a differing opinion + lastRequestedFirstvisible = firstRowInViewPort; client.updateVariable(paintableId, "firstvisible", firstRowInViewPort, false); return; // scrolled withing "non-react area" @@ -852,7 +862,9 @@ public class IScrollTable extends Composite implements Table, ScrollListener, client.updateVariable(paintableId, "lastToBeRendered", lastToBeRendered, false); - + // remember which firstvisible we requested, in case the server has + // a differing opinion + lastRequestedFirstvisible = firstRowInViewPort; client.updateVariable(paintableId, "firstvisible", firstRowInViewPort, false); client.updateVariable(paintableId, "reqfirstrow", reqFirstRow, -- 2.39.5