From 9762a7c2726f4aa0ad96379ea5d49c195ee764e8 Mon Sep 17 00:00:00 2001 From: Pekka Hyvönen Date: Tue, 14 Mar 2017 16:14:57 +0200 Subject: Fix removing rows over the cached range in Grid Fixes #8840 --- .../java/com/vaadin/client/data/AbstractRemoteDataSource.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'client') 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 cf7a121190..a5cdace776 100644 --- a/client/src/main/java/com/vaadin/client/data/AbstractRemoteDataSource.java +++ b/client/src/main/java/com/vaadin/client/data/AbstractRemoteDataSource.java @@ -580,7 +580,15 @@ public abstract class AbstractRemoteDataSource implements DataSource { 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()); -- cgit v1.2.3