summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTatu Lund <tatu@vaadin.com>2019-10-03 14:10:13 +0300
committerZhe Sun <31067185+ZheSun88@users.noreply.github.com>2019-10-04 10:20:39 +0300
commit0fa5bc69b2e988664f80e1e0583afdb5cd808a25 (patch)
tree5591b69cef1f6d8fc9276a9a1232185893badd05
parentc825eab83601ff3aa8075fe621389cdc8ae25586 (diff)
downloadvaadin-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-xclient/src/main/java/com/vaadin/client/widgets/Grid.java29
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)) {