diff options
author | Tatu Lund <tatu@vaadin.com> | 2019-10-03 14:10:13 +0300 |
---|---|---|
committer | Zhe Sun <31067185+ZheSun88@users.noreply.github.com> | 2019-10-04 10:20:39 +0300 |
commit | 0fa5bc69b2e988664f80e1e0583afdb5cd808a25 (patch) | |
tree | 5591b69cef1f6d8fc9276a9a1232185893badd05 | |
parent | c825eab83601ff3aa8075fe621389cdc8ae25586 (diff) | |
download | vaadin-framework-0fa5bc69b2e988664f80e1e0583afdb5cd808a25.tar.gz vaadin-framework-0fa5bc69b2e988664f80e1e0583afdb5cd808a25.zip |
Catch and handle IllegalStateException (#11733)
* Catch and handle IllegalStateException
Fixes https://github.com/vaadin/framework/issues/11730
* Renaming variables
-rwxr-xr-x | client/src/main/java/com/vaadin/client/widgets/Grid.java | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/client/src/main/java/com/vaadin/client/widgets/Grid.java b/client/src/main/java/com/vaadin/client/widgets/Grid.java index 3a67dcfd3b..2cbeb9cd21 100755 --- a/client/src/main/java/com/vaadin/client/widgets/Grid.java +++ b/client/src/main/java/com/vaadin/client/widgets/Grid.java @@ -7751,8 +7751,8 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, return; } - Element e = Element.as(target); - RowContainer container = escalator.findRowContainer(e); + Element element = Element.as(target); + RowContainer container = escalator.findRowContainer(element); Cell cell; if (container == null) { @@ -7764,23 +7764,30 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, } else { // Click might be in an editor cell, should still map. if (editor.editorOverlay != null - && editor.editorOverlay.isOrHasChild(e)) { + && editor.editorOverlay.isOrHasChild(element)) { container = escalator.getBody(); int rowIndex = editor.getRow(); - int colIndex = editor.getElementColumn(e); + int colIndex = editor.getElementColumn(element); if (colIndex < 0) { // Click in editor, but not for any column. return; } - TableCellElement cellElement = container - .getRowElement(rowIndex).getCells() - .getItem(colIndex); - - cell = new Cell(rowIndex, colIndex, cellElement); + try { + TableCellElement cellElement = container + .getRowElement(rowIndex).getCells() + .getItem(colIndex); + + cell = new Cell(rowIndex, colIndex, cellElement); + } catch (IllegalStateException exception) { + // IllegalStateException may occur if user has scrolled Grid so + // that Escalator has updated, and row under Editor is no longer + // there + return; + } } else { - if (escalator.getElement().isOrHasChild(e)) { + if (escalator.getElement().isOrHasChild(element)) { eventCell.set(new Cell(-1, -1, null), Section.BODY); // Fire native events. super.onBrowserEvent(event); @@ -7789,7 +7796,7 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, } } } else { - cell = container.getCell(e); + cell = container.getCell(element); if (eventType.equals(BrowserEvents.MOUSEDOWN)) { cellOnPrevMouseDown = cell; } else if (cell == null && eventType.equals(BrowserEvents.CLICK)) { |