From: Teemu Suo-Anttila Date: Wed, 10 Jun 2015 13:26:35 +0000 (+0300) Subject: Add a workaround to not display a spacer just scrolled to view (#17826) X-Git-Tag: 7.6.0.alpha2~6^2~13 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4bc734e56af463d657044b48aef58859786c81dd;p=vaadin-framework.git Add a workaround to not display a spacer just scrolled to view (#17826) Change-Id: I22805530cca26a23a6cc15c94b396aaba1f1245b --- diff --git a/client/src/com/vaadin/client/widgets/Escalator.java b/client/src/com/vaadin/client/widgets/Escalator.java index 3990683e64..7cce34fa22 100644 --- a/client/src/com/vaadin/client/widgets/Escalator.java +++ b/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 getSpacers() { @@ -5306,7 +5314,6 @@ public class Escalator extends Widget implements RequiresResize, initSpacerContent(spacer); body.sortDomElements(); - updateSpacerDecosVisibility(); } private void updateExistingSpacer(int rowIndex, double newHeight) {