Skip to content

Commit d06f2c2

Browse files
committed
improved selector
1 parent 6225802 commit d06f2c2

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

src/main/java/com/gargoylesoftware/css/dom/CSSStyleSheetImpl.java

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)