ソースを参照

Prevent a gap within Grid rows in some resize situations. (#11918)

Fixes #11892
tags/8.11.0.alpha1
Anna Koskinen 4年前
コミット
1313bbbe3b
コミッターのメールアドレスに関連付けられたアカウントが存在しません
1個のファイルの変更25行の追加3行の削除
  1. 25
    3
      client/src/main/java/com/vaadin/client/widgets/Escalator.java

+ 25
- 3
client/src/main/java/com/vaadin/client/widgets/Escalator.java ファイルの表示

@@ -4578,7 +4578,7 @@ public class Escalator extends Widget
// for a gap if a details row is later closed (e.g. by user)
final int addToBottom = Math.min(rowDiff,
getRowCount() - logicalTargetIndex);
final int addToTop = rowDiff - addToBottom;
final int addToTop = Math.max(rowDiff - addToBottom, 0);

if (addToTop > 0) {
fillAndPopulateEscalatorRowsIfNeeded(0,
@@ -4587,8 +4587,30 @@ public class Escalator extends Widget
updateTopRowLogicalIndex(-addToTop);
}
if (addToBottom > 0) {
fillAndPopulateEscalatorRowsIfNeeded(visualTargetIndex,
logicalTargetIndex, addToBottom);
// take into account that rows may have got added to top as
// well, affects visual but not logical indexing
fillAndPopulateEscalatorRowsIfNeeded(
visualTargetIndex + addToTop, logicalTargetIndex,
addToBottom);

// adding new rows due to resizing may have created a gap in
// the middle, check whether the existing rows need moving
double rowTop = getRowTop(oldTopRowLogicalIndex);
if (rowTop > getRowTop(visualRowOrder.get(addToTop))) {
for (int i = addToTop; i < visualTargetIndex; i++) {

final TableRowElement tr = visualRowOrder.get(i);

setRowPosition(tr, 0, rowTop);
rowTop += getDefaultRowHeight();
SpacerContainer.SpacerImpl spacer = spacerContainer
.getSpacer(oldTopRowLogicalIndex + i);
if (spacer != null) {
spacer.setPosition(0, rowTop);
rowTop += spacer.getHeight();
}
}
}
}
} else if (rowDiff < 0) {
// rows need to be removed

読み込み中…
キャンセル
保存