diff options
author | Marc Englund <marc@vaadin.com> | 2012-11-20 13:52:46 +0000 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2012-11-20 13:52:46 +0000 |
commit | 6d2f957ef989ab36d80c7e4a6fbb13380d9f1265 (patch) | |
tree | 19d58d8fd9f5c4a2152735f9b1cb59d988597dbb /theme-compiler/src/com/vaadin | |
parent | 98555d0eac757e738b9218cd0d8b719dd37ccc05 (diff) | |
parent | 7e458a4acf1276ae00872954e9082cc412bfa10a (diff) | |
download | vaadin-framework-6d2f957ef989ab36d80c7e4a6fbb13380d9f1265.tar.gz vaadin-framework-6d2f957ef989ab36d80c7e4a6fbb13380d9f1265.zip |
Merge "(#10182) Rule order not preserved when using parent reference in sass"
Diffstat (limited to 'theme-compiler/src/com/vaadin')
3 files changed, 15 insertions, 13 deletions
diff --git a/theme-compiler/src/com/vaadin/sass/ScssStylesheet.java b/theme-compiler/src/com/vaadin/sass/ScssStylesheet.java index 45578deb19..5f46844641 100644 --- a/theme-compiler/src/com/vaadin/sass/ScssStylesheet.java +++ b/theme-compiler/src/com/vaadin/sass/ScssStylesheet.java @@ -38,7 +38,6 @@ import com.vaadin.sass.tree.Node; import com.vaadin.sass.tree.VariableNode; import com.vaadin.sass.tree.controldirective.IfElseDefNode; import com.vaadin.sass.visitor.ImportNodeHandler; -import com.vaadin.sass.visitor.ParentSelectorHandler; public class ScssStylesheet extends Node { @@ -52,6 +51,8 @@ public class ScssStylesheet extends Node { private static final HashSet<IfElseDefNode> ifElseDefNodes = new HashSet<IfElseDefNode>(); + private static HashMap<Node, Node> lastNodeAdded = new HashMap<Node, Node>(); + private String fileName; /** @@ -130,7 +131,7 @@ public class ScssStylesheet extends Node { mixinDefs.clear(); variables.clear(); ifElseDefNodes.clear(); - ParentSelectorHandler.clear(); + lastNodeAdded.clear(); importOtherFiles(this); populateDefinitions(this); traverse(this); @@ -245,4 +246,8 @@ public class ScssStylesheet extends Node { return fileName; } + public static HashMap<Node, Node> getLastNodeAdded() { + return lastNodeAdded; + } + } diff --git a/theme-compiler/src/com/vaadin/sass/visitor/BlockNodeHandler.java b/theme-compiler/src/com/vaadin/sass/visitor/BlockNodeHandler.java index d338cb0843..0d00fd2d0c 100644 --- a/theme-compiler/src/com/vaadin/sass/visitor/BlockNodeHandler.java +++ b/theme-compiler/src/com/vaadin/sass/visitor/BlockNodeHandler.java @@ -19,13 +19,12 @@ package com.vaadin.sass.visitor; import java.util.ArrayList; import java.util.HashMap; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.tree.BlockNode; import com.vaadin.sass.tree.Node; public class BlockNodeHandler { - private static HashMap<Node, Node> lastNodeAdded = new HashMap<Node, Node>(); - public static void traverse(BlockNode node) { Node parent = node.getParentNode(); @@ -61,6 +60,7 @@ public class BlockNodeHandler { } node.setSelectorList(newList); Node oldParent = node.getParentNode(); + HashMap<Node, Node> lastNodeAdded = ScssStylesheet.getLastNodeAdded(); if (lastNodeAdded.get(oldParent) != null) { node.getParentNode().getParentNode() .appendChild(node, lastNodeAdded.get(oldParent)); diff --git a/theme-compiler/src/com/vaadin/sass/visitor/ParentSelectorHandler.java b/theme-compiler/src/com/vaadin/sass/visitor/ParentSelectorHandler.java index 4098cc7cad..cb7b0ac8a8 100644 --- a/theme-compiler/src/com/vaadin/sass/visitor/ParentSelectorHandler.java +++ b/theme-compiler/src/com/vaadin/sass/visitor/ParentSelectorHandler.java @@ -19,13 +19,12 @@ package com.vaadin.sass.visitor; import java.util.ArrayList; import java.util.HashMap; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.tree.BlockNode; import com.vaadin.sass.tree.Node; public class ParentSelectorHandler { - private static HashMap<Node, Node> parentSelectors = new HashMap<Node, Node>(); - public static void traverse(BlockNode block) throws Exception { Node parentNode = block.getParentNode(); if (parentNode instanceof BlockNode) { @@ -48,22 +47,20 @@ public class ParentSelectorHandler { if (isParentSelector) { block.setSelectorList(newList); Node oldparent = block.getParentNode(); - if (parentSelectors.containsKey(block.getParentNode())) { + HashMap<Node, Node> lastNodeAdded = ScssStylesheet + .getLastNodeAdded(); + if (lastNodeAdded.containsKey(block.getParentNode())) { block.getParentNode() .getParentNode() .appendChild(block, - parentSelectors.get(block.getParentNode())); + lastNodeAdded.get(block.getParentNode())); } else { block.getParentNode().getParentNode() .appendChild(block, block.getParentNode()); } - parentSelectors.put(oldparent, block); + lastNodeAdded.put(oldparent, block); } } } - - public static void clear() { - parentSelectors.clear(); - } } |