diff options
author | Pekka Hyvönen <pekka@vaadin.com> | 2017-03-14 16:14:57 +0200 |
---|---|---|
committer | Pekka Hyvönen <pekka@vaadin.com> | 2017-03-27 11:32:51 +0300 |
commit | 1e0661129b7c53704d088d2e1f7ea95630ca46b4 (patch) | |
tree | 12534d2ca37827746c5ac94131429e94e275225a | |
parent | 2fe4c50ac802533e0057ebb8ce0c3c5d1bf50b4b (diff) | |
download | vaadin-framework-1e0661129b7c53704d088d2e1f7ea95630ca46b4.tar.gz vaadin-framework-1e0661129b7c53704d088d2e1f7ea95630ca46b4.zip |
Fix removing rows over the cached range in Grid
Fixes #8840
-rw-r--r-- | client/src/main/java/com/vaadin/client/data/AbstractRemoteDataSource.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/client/src/main/java/com/vaadin/client/data/AbstractRemoteDataSource.java b/client/src/main/java/com/vaadin/client/data/AbstractRemoteDataSource.java index d8de542faa..d1ff848401 100644 --- a/client/src/main/java/com/vaadin/client/data/AbstractRemoteDataSource.java +++ b/client/src/main/java/com/vaadin/client/data/AbstractRemoteDataSource.java @@ -665,7 +665,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()); |