Browse Source

Catch and handle IllegalStateException (#11733)

* Catch and handle IllegalStateException

Fixes https://github.com/vaadin/framework/issues/11730

* Renaming variables
tags/8.10.0.alpha1
Tatu Lund 4 years ago
parent
commit
1b4409936d
No account linked to committer's email address
1 changed files with 18 additions and 11 deletions
  1. 18
    11
      client/src/main/java/com/vaadin/client/widgets/Grid.java

+ 18
- 11
client/src/main/java/com/vaadin/client/widgets/Grid.java View File

@@ -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)) {

Loading…
Cancel
Save