Vendor selectors can be merged or override other properties if redefine same selectors only, e.g.
a{color:red}a,::-webkit-scrollbar{color:blue} once merged would not yield red links in all browsers but webkit based.
* Adds a better non-adjacent optimizer compatible with the upcoming new property optimizer.
* Fixed issue [#247](https://github.com/GoalSmashers/clean-css/issues/247) - removes deprecated `selectorsMergeMode` switch.
+[2.1.3 / 2014-xx-xx (UNRELEASED)](https://github.com/GoalSmashers/clean-css/compare/v2.1.2...v2.1.3)
+==================
+
+* Fixed issue [#248](https://github.com/GoalSmashers/clean-css/issues/248) - incorrect merging for vendor selectors.
+
[2.1.2 / 2014-02-25](https://github.com/GoalSmashers/clean-css/compare/v2.1.1...v2.1.2)
==================
continue;
var complexSelector = token.selector;
- var selectors = complexSelector.split(','); // simplification, as :not() can have commas too
-
- if (selectors.length > 1)
- selectors.unshift(complexSelector);
+ var selectors = complexSelector.indexOf(',') > -1 && !isSpecial(complexSelector) ?
+ complexSelector.split(',').concat(complexSelector) : // simplification, as :not() can have commas too
+ [complexSelector];
for (var j = 0, m = selectors.length; j < m; j++) {
var selector = selectors[j];
var intoPosition = positions[complexSelector].pop().where;
var intoToken = tokens[intoPosition];
- var selectors = complexSelector.split(',');
+ var selectors = isSpecial(complexSelector) ?
+ [complexSelector] :
+ complexSelector.split(',');
var reducedBodies = [];
for (var j = 0, m = selectors.length; j < m; j++) {
'in two passes': [
'a{color:red}a{background:red}b{color:red}b{background:red}',
'a,b{color:red;background:red}'
- ]
+ ],
+ 'when overriden with a browser specific selector': 'a{color:red}::-webkit-scrollbar,a{color:#fff}'
}),
'same non-adjacent selectors': cssContext({
'with different properties': 'a{color:red;display:block}.one{font-size:12px}a{margin:2px}',
'when undefined is used as a value with reduction': [
'.one{text-shadow:undefined}p{color:red}.one{font-size:12px;text-shadow:none}',
'p{color:red}.one{font-size:12px;text-shadow:none}'
+ ],
+ 'when overriden with a browser specific selector': 'a{color:red}p{display:block}::-moz-selection,a{color:#fff}',
+ 'when same browser specific selector more than once': [
+ 'a,::-moz-selection{color:red}p{display:block}a,::-moz-selection{color:#fff}',
+ 'p{display:block}::-moz-selection,a{color:#fff}'
]
}),
'rerun optimizers': cssContext({