]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix updating Escalator's physical row index. (#12232)
authorAnna Koskinen <Ansku@users.noreply.github.com>
Mon, 8 Mar 2021 13:38:40 +0000 (15:38 +0200)
committerGitHub <noreply@github.com>
Mon, 8 Mar 2021 13:38:40 +0000 (15:38 +0200)
* Fix updating Escalator's physical row index.

- Physical index should take into account that more than one row can
have a spacer. Physical index has no practical effect on how Grid looks
like or behaves, since Escalator by design operates independently of it
and the visual positioning of elements is based on the logical and
visual indices. Physical index only affects the order of elements
within the DOM tree, where a mismatch can cause confusion during
debugging.

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

index f48177fa84ad3bb9c31ef007ea34e6f702f3cc39..4f41fe5c6d799bf2aee144bf0bc70e249741f66e 100644 (file)
@@ -4834,13 +4834,16 @@ public class Escalator extends Widget
              * Start at -1 to include a spacer that is rendered above the
              * viewport, but its parent row is still not shown
              */
+            int addedSpacers = 0;
             for (int i = -1; i < visualRowOrder.size(); i++) {
                 SpacerContainer.SpacerImpl spacer = spacers
                         .remove(Integer.valueOf(getTopRowLogicalIndex() + i));
 
                 if (spacer != null) {
-                    orderedBodyRows.add(i + 1, spacer.getRootElement());
+                    orderedBodyRows.add(i + 1 + addedSpacers,
+                            spacer.getRootElement());
                     spacer.show();
+                    ++addedSpacers;
                 }
             }
             /*