@@ -390,14 +390,26 @@ public void addElementSelector(final String name, final Selector s, final CSSSty
390390 entries .add (selectorEntry );
391391 }
392392
393- public void addClassSelector (final String name , final Selector s , final CSSStyleRuleImpl styleRule ) {
394- List <SelectorEntry > entries = classSelectors_ .get (name );
393+ public void addClassSelector (final String elementName , final String className ,
394+ final Selector s , final CSSStyleRuleImpl styleRule ) {
395+ List <SelectorEntry > entries = classSelectors_ .get (className );
395396 if (entries == null ) {
396397 entries = new ArrayList <SelectorEntry >();
397- classSelectors_ .put (name , entries );
398+ classSelectors_ .put (className , entries );
398399 }
399- final SelectorEntry selectorEntry = new SelectorEntry (s , styleRule );
400+ SelectorEntry selectorEntry = new SelectorEntry (s , styleRule );
400401 entries .add (selectorEntry );
402+
403+ if (elementName != null ) {
404+ final String key = elementName + "." + className ;
405+ entries = classSelectors_ .get (key );
406+ if (entries == null ) {
407+ entries = new ArrayList <SelectorEntry >();
408+ classSelectors_ .put (key , entries );
409+ }
410+ selectorEntry = new SelectorEntry (s , styleRule );
411+ entries .add (selectorEntry );
412+ }
401413 }
402414
403415 public void addOtherSelector (final Selector s , final CSSStyleRuleImpl styleRule ) {
@@ -439,10 +451,15 @@ static final class SelectorEntriesIterator implements Iterator<SelectorEntry> {
439451 SelectorEntriesIterator (final CSSStyleSheetRuleIndex index ,
440452 final String elementName , final String [] classes ) {
441453 iterators_ = new LinkedList <Iterator <SelectorEntry >>();
454+
442455 List <SelectorEntry > sel = index .elementSelectors_ .get ("*" );
443456 if (sel != null && !sel .isEmpty ()) {
444457 iterators_ .add (sel .iterator ());
445458 }
459+ sel = index .elementSelectors_ .get (elementName );
460+ if (sel != null && !sel .isEmpty ()) {
461+ iterators_ .add (sel .iterator ());
462+ }
446463
447464 if (classes != null ) {
448465 for (String clazz : classes ) {
@@ -451,12 +468,12 @@ static final class SelectorEntriesIterator implements Iterator<SelectorEntry> {
451468 iterators_ .add (sel .iterator ());
452469 }
453470
471+ sel = index .classSelectors_ .get (elementName + "." + clazz );
472+ if (sel != null && !sel .isEmpty ()) {
473+ iterators_ .add (sel .iterator ());
474+ }
454475 }
455476 }
456- sel = index .elementSelectors_ .get (elementName );
457- if (sel != null && !sel .isEmpty ()) {
458- iterators_ .add (sel .iterator ());
459- }
460477
461478 if (index .otherSelectors_ != null && !index .otherSelectors_ .isEmpty ()) {
462479 iterators_ .add (index .otherSelectors_ .iterator ());
0 commit comments