]> source.dussan.org Git - vaadin-framework.git/commitdiff
Catch exception that is thrown when Grid is scrolled during operation (#11467) 7.7.17
authorTatu Lund <tatu@vaadin.com>
Mon, 11 Mar 2019 07:55:05 +0000 (09:55 +0200)
committerOlli Tietäväinen <ollit@vaadin.com>
Mon, 11 Mar 2019 07:55:05 +0000 (09:55 +0200)
IllegalStateException may occur if user has scrolled Grid so that Escalator has updated, and row under Editor is no longer there
Fixes https://github.com/vaadin/framework/issues/11463

client/src/main/java/com/vaadin/client/widgets/Grid.java

index 4f0b012a0033106209ac5d7a09d9cfd2c0a707b7..06565e13f2b928615f56591d0dbdcacfa7405da4 100755 (executable)
@@ -2140,15 +2140,21 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>,
             double newLeft = frozenWidth - scrollLeft;
             cellWrapper.getStyle().setLeft(newLeft, Unit.PX);
 
-            // sometimes focus handling twists the editor row out of alignment
-            // with the grid itself and the position needs to be compensated for
-            TableRowElement rowElement = grid.getEscalator().getBody()
+            try {
+                // sometimes focus handling twists the editor row out of alignment
+                // with the grid itself and the position needs to be compensated for
+                TableRowElement rowElement = grid.getEscalator().getBody()
                     .getRowElement(grid.getEditor().getRow());
-            int rowLeft = rowElement.getAbsoluteLeft();
-            int editorLeft = cellWrapper.getAbsoluteLeft();
-            if (editorLeft != rowLeft + frozenWidth) {
-                cellWrapper.getStyle().setLeft(newLeft + rowLeft - editorLeft,
+                int rowLeft = rowElement.getAbsoluteLeft();
+                int editorLeft = cellWrapper.getAbsoluteLeft();
+                if (editorLeft != rowLeft + frozenWidth) {
+                    cellWrapper.getStyle().setLeft(newLeft + rowLeft - editorLeft,
                         Unit.PX);
+                }
+            } catch (IllegalStateException e) {
+                // IllegalStateException may occur if user has scrolled Grid so
+                // that Escalator has updated, and row under Editor is no longer
+                // there
             }
         }