Fixes a list subset error in AbstractListModel that was breaking paging.
Changes ListListModel's deferred command to be more careful about clearing
its pending state (so that an exception won't break it permanently).

Review at http://gwt-code-reviews.appspot.com/293801

Review by: rice@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7836 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/bikeshed/src/com/google/gwt/bikeshed/list/shared/AbstractListModel.java b/bikeshed/src/com/google/gwt/bikeshed/list/shared/AbstractListModel.java
index 43fdca2..b66db76 100644
--- a/bikeshed/src/com/google/gwt/bikeshed/list/shared/AbstractListModel.java
+++ b/bikeshed/src/com/google/gwt/bikeshed/list/shared/AbstractListModel.java
@@ -159,7 +159,8 @@
         int realStart = curStart < start ? start : curStart;
         int realEnd = curEnd > end ? end : curEnd;
         int realLength = realEnd - realStart;
-        List<T> realValues = values.subList(0, realLength);
+        List<T> realValues = values.subList(realStart - start,
+            realStart - start + realLength);
         ListEvent<T> event = new ListEvent<T>(realStart, realLength, realValues);
         reg.getHandler().onDataChanged(event);
       }
diff --git a/bikeshed/src/com/google/gwt/bikeshed/list/shared/ListListModel.java b/bikeshed/src/com/google/gwt/bikeshed/list/shared/ListListModel.java
index b9c1a11..c1c2645 100644
--- a/bikeshed/src/com/google/gwt/bikeshed/list/shared/ListListModel.java
+++ b/bikeshed/src/com/google/gwt/bikeshed/list/shared/ListListModel.java
@@ -48,6 +48,8 @@
      */
     private Command flushCommand = new Command() {
       public void execute() {
+        flushPending = false;
+
         int newSize = list.size();
         if (curSize != newSize) {
           curSize = newSize;
@@ -61,7 +63,6 @@
         }
         minModified = Integer.MAX_VALUE;
         maxModified = Integer.MIN_VALUE;
-        flushPending = false;
       }
     };