]> source.dussan.org Git - vaadin-framework.git/commitdiff
Add a workaround to not display a spacer just scrolled to view (#17826)
authorTeemu Suo-Anttila <teemusa@vaadin.com>
Wed, 10 Jun 2015 13:26:35 +0000 (16:26 +0300)
committerVaadin Code Review <review@vaadin.com>
Wed, 10 Jun 2015 14:06:43 +0000 (14:06 +0000)
Change-Id: I22805530cca26a23a6cc15c94b396aaba1f1245b

client/src/com/vaadin/client/widgets/Escalator.java

index 3990683e64fffbe58edaa74ef1e5eaee549e9f04..7cce34fa220c3e5c7c65df5ce17f4ba27161f9a1 100644 (file)
@@ -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) {