diff options
-rw-r--r-- | client/src/com/vaadin/client/widgets/Grid.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java index 8a8aa75e92..cb9e9c55d1 100644 --- a/client/src/com/vaadin/client/widgets/Grid.java +++ b/client/src/com/vaadin/client/widgets/Grid.java @@ -2148,10 +2148,12 @@ public class Grid<T> extends ResizeComposite implements rowWithFocus = removed.getStart() - 1; } else { if (escalator.getHeader().getRowCount() > 0) { - rowWithFocus = lastFocusedHeaderRow; + rowWithFocus = Math.min(lastFocusedHeaderRow, escalator + .getHeader().getRowCount() - 1); containerWithFocus = escalator.getHeader(); } else if (escalator.getFooter().getRowCount() > 0) { - rowWithFocus = lastFocusedFooterRow; + rowWithFocus = Math.min(lastFocusedFooterRow, escalator + .getFooter().getRowCount() - 1); containerWithFocus = escalator.getFooter(); } } @@ -4571,8 +4573,12 @@ public class Grid<T> extends ResizeComposite implements if (newSize > oldSize) { body.insertRows(oldSize, newSize - oldSize); + cellFocusHandler.rowsAddedToBody(Range.withLength(oldSize, + newSize - oldSize)); } else if (newSize < oldSize) { body.removeRows(newSize, oldSize - newSize); + cellFocusHandler.rowsRemovedFromBody(Range.withLength( + newSize, oldSize - newSize)); } if (newSize > 0) { |