Browse Source

Fixes #2005 (server-side scrolling of table broken)

svn changeset:5254/svn branch:trunk
tags/6.7.0.beta1
Marc Englund 16 years ago
parent
commit
3b66c56dda
1 changed files with 13 additions and 1 deletions
  1. 13
    1
      src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java

+ 13
- 1
src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java View File

@@ -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,

Loading…
Cancel
Save