]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix removing rows over the cached range in Grid
authorPekka Hyvönen <pekka@vaadin.com>
Tue, 14 Mar 2017 14:14:57 +0000 (16:14 +0200)
committerHenri Sara <henri.sara@gmail.com>
Thu, 30 Mar 2017 08:20:55 +0000 (11:20 +0300)
Fixes #8840

client/src/main/java/com/vaadin/client/data/AbstractRemoteDataSource.java

index cf7a121190624707fa91343779b24593ba405e8f..a5cdace776bac0d740ff51e7eebd5f1b54cfcf54 100644 (file)
@@ -580,7 +580,15 @@ public abstract class AbstractRemoteDataSource<T> implements DataSource<T> {
             Range remainsBefore = partitions[0];
             Range transposedRemainsAfter = partitions[2]
                     .offsetBy(-removedRange.length());
-            cached = remainsBefore.combineWith(transposedRemainsAfter);
+            // #8840 either can be empty if the removed range was over the
+            // cached range
+            if (remainsBefore.isEmpty()) {
+                cached = transposedRemainsAfter;
+            } else if (transposedRemainsAfter.isEmpty()) {
+                cached = remainsBefore;
+            } else {
+                cached = remainsBefore.combineWith(transposedRemainsAfter);
+            }
         } else if (removedRange.getEnd() <= cached.getStart()) {
             // Removal was before the cache. offset the cache.
             cached = cached.offsetBy(-removedRange.length());