From 6823abb8024060eee6a4f8eaace288ed9dd58e65 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Wed, 27 Jun 2012 17:21:17 -0700 Subject: Styles Controller - Fix specificity comparison in hasGreaterSpecificity() --- js/controllers/styles-controller.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 0f847653..47c63c09 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -213,6 +213,9 @@ var stylesController = exports.StylesController = Montage.create(Component, { stylesheet.insertRule(ruleText, index); + ///// Invalidate cache because rule dominance is affected + this._clearCache(); + this.styleSheetModified(stylesheet); rule = stylesheet.rules[index]; @@ -775,7 +778,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { var a = this._getMostSpecificSelectorForElement(element, rule1[this.CONST.SPECIFICITY_KEY]), b = this._getMostSpecificSelectorForElement(element, rule2[this.CONST.SPECIFICITY_KEY]), win = element.ownerDocument.defaultView, - order; + order, sheetAIndex, sheetBIndex, ruleAIndex, ruleBIndex; order = this.compareSpecificity(a.specificity, b.specificity); @@ -786,9 +789,9 @@ var stylesController = exports.StylesController = Montage.create(Component, { /// If tied again (same sheet), determine which is further down in the sheet if(sheetAIndex === sheetBIndex) { ruleAIndex = this.getRuleIndex(rule1); ruleBIndex = this.getRuleIndex(rule2); - return ruleAIndex < ruleBIndex ? 1 : (ruleAIndex > ruleBIndex) ? -1 : 0; + return ruleAIndex < ruleBIndex ? false : (ruleAIndex > ruleBIndex) ? true : false; } else { - return sheetAIndex < sheetBIndex ? 1 : (sheetAIndex > sheetBIndex) ? -1 : 0; + return sheetAIndex < sheetBIndex ? false : (sheetAIndex > sheetBIndex) ? true : false; } } @@ -1552,6 +1555,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { value: function(el, property, rule) { if(!el.elementModel) { return false; } /// return null if there is no element model + console.log("Setting cache for property: ", property); this._cacheHistory.push({ rule: rule, element: el, @@ -1614,6 +1618,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { if(!element) { this._cacheHistory = null; this._cacheHistory = []; + console.log("Removing cache: ", this._cacheHistory); } } -- cgit v1.2.3