ソースを参照

Add a workaround to not display a spacer just scrolled to view (#17826)

Change-Id: I22805530cca26a23a6cc15c94b396aaba1f1245b
tags/7.6.0.alpha2
Teemu Suo-Anttila 9年前
コミット
4bc734e56a
1個のファイルの変更11行の追加4行の削除
  1. 11
    4
      client/src/com/vaadin/client/widgets/Escalator.java

+ 11
- 4
client/src/com/vaadin/client/widgets/Escalator.java ファイルの表示

@@ -4845,9 +4845,17 @@ public class Escalator extends Widget implements RequiresResize,
final double bodyBottom, final double decoWidth) {
final int top = deco.getAbsoluteTop();
final int bottom = deco.getAbsoluteBottom();
/*
* FIXME
*
* Height and its use is a workaround for the issue where
* coordinates of the deco are not calculated yet. This will
* prevent a deco from being displayed when it's added to DOM
*/
final int height = bottom - top;
if (top < bodyTop || bottom > bodyBottom) {
final double topClip = Math.max(0.0D, bodyTop - top);
final double bottomClip = decoHeight
final double bottomClip = height
- Math.max(0.0D, bottom - bodyBottom);
// TODO [optimize] not sure how GWT compiles this
final String clip = new StringBuilder("rect(")
@@ -4903,6 +4911,8 @@ public class Escalator extends Widget implements RequiresResize,
} else if (spacerExists(rowIndex)) {
removeSpacer(rowIndex);
}

updateSpacerDecosVisibility();
}

/** Checks if a given element is a spacer element */
@@ -4994,8 +5004,6 @@ public class Escalator extends Widget implements RequiresResize,
spacerScrollerRegistration.removeHandler();
spacerScrollerRegistration = null;
}

updateSpacerDecosVisibility();
}

public Map<Integer, SpacerImpl> getSpacers() {
@@ -5306,7 +5314,6 @@ public class Escalator extends Widget implements RequiresResize,
initSpacerContent(spacer);

body.sortDomElements();
updateSpacerDecosVisibility();
}

private void updateExistingSpacer(int rowIndex, double newHeight) {

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