From 78bfb5cb1cc72164e73cf7919501fa22ba05445d Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Mon, 26 Nov 2012 12:36:46 +0200 Subject: Keep block order when unnesting (#10309) Change-Id: I5a7e6b74a55176799e85c943a128d9aab0db0876 --- .../src/com/vaadin/sass/internal/ScssStylesheet.java | 7 ++++++- .../com/vaadin/sass/internal/visitor/BlockNodeHandler.java | 13 +++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) (limited to 'theme-compiler/src') diff --git a/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java b/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java index af061d8e95..2a5d617a6b 100644 --- a/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java +++ b/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java @@ -235,9 +235,14 @@ public class ScssStylesheet extends Node { variables.clear(); variables.putAll(variableScope); + // clean up insert point so that processing of the next block will + // insert after that block + lastNodeAdded.remove(originalParent); + // has the node been removed from its parent? if (originalParent != null) { - return !originalParent.getChildren().contains(node); + boolean removed = !originalParent.getChildren().contains(node); + return removed; } else { return false; } diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/BlockNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/BlockNodeHandler.java index cb736ba558..fc34e32f7a 100644 --- a/theme-compiler/src/com/vaadin/sass/internal/visitor/BlockNodeHandler.java +++ b/theme-compiler/src/com/vaadin/sass/internal/visitor/BlockNodeHandler.java @@ -98,14 +98,15 @@ public class BlockNodeHandler { } node.setSelectorList(newList); Node oldParent = node.getParentNode(); + HashMap lastNodeAdded = ScssStylesheet.getLastNodeAdded(); - if (lastNodeAdded.get(oldParent) != null) { - oldParent.getParentNode().appendChild(node, - lastNodeAdded.get(oldParent)); - } else { - oldParent.getParentNode().appendChild(node, oldParent); + Node lastAdded = lastNodeAdded.get(oldParent.getParentNode()); + if (lastAdded == null) { + lastAdded = oldParent; } - lastNodeAdded.put(oldParent, node); + oldParent.getParentNode().appendChild(node, lastAdded); + + lastNodeAdded.put(oldParent.getParentNode(), node); } } -- cgit v1.2.3