Source Code (Use browser search to find items of interest.)
Class Index
kdelibs'CSSStyleSelectorList (./kdelibs/khtml/css/cssstyleselector.h:158)
class CSSStyleSelectorList : public QList<CSSOrderedRule>
{
public:
CSSStyleSelectorList();
virtual ~CSSStyleSelectorList();
virtual int compareItems(QCollection::Item i1, QCollection::Item i2);
void append(DOM::StyleSheetImpl *sheet);
void append(DOM::CSSStyleRuleImpl *rule);
/**
* collects the rules that would apply to the style object. The important variable adds to
* the priority of the CSSOrderedProperty appended.
* This is needed to get the sorting order correct.
* offset is used to get the ordering between default user and author style sheets right
*/
void collect(khtml::CSSOrderedPropertyList *propsToApply, DOM::ElementImpl *e,
int offset = 0x0, int important = 0x0);
};
};
kdelibs'CSSStyleSelectorList::CSSStyleSelectorList() (./kdelibs/khtml/css/cssstyleselector.cpp:347)
CSSStyleSelectorList::CSSStyleSelectorList()
: QList<CSSOrderedRule>()
{
setAutoDelete(true);
}
kdelibs'CSSStyleSelectorList::~CSSStyleSelectorList() (./kdelibs/khtml/css/cssstyleselector.cpp:352)
CSSStyleSelectorList::~CSSStyleSelectorList()
{
}
kdelibs'CSSStyleSelectorList::compareItems() (./kdelibs/khtml/css/cssstyleselector.cpp:356)
int CSSStyleSelectorList::compareItems(QCollection::Item i1, QCollection::Item i2)
{
CSSOrderedRule *r1 = static_cast<CSSOrderedRule *>(i1);
CSSOrderedRule *r2 = static_cast<CSSOrderedRule *>(i2);
int d = r1->selector->specificity() - r2->selector->specificity();
if(d) return d;
return r1->index - r2->index;
}
kdelibs'CSSStyleSelectorList::append() (./kdelibs/khtml/css/cssstyleselector.cpp:365)
void CSSStyleSelectorList::append(StyleSheetImpl *sheet)
{
if(!sheet || !sheet->isCSSStyleSheet()) return;
int len = sheet->length();
for(int i = 0; i< len; i++)
{
StyleBaseImpl *item = sheet->item(i);
if(item->isStyleRule())
{
CSSStyleRuleImpl *r = static_cast<CSSStyleRuleImpl *>(item);
QList<CSSSelector> *s = r->selector();
for(int j = 0; j < (int)s->count(); j++)
{
CSSOrderedRule *rule = new CSSOrderedRule(r, s->at(j), count());
QList<CSSOrderedRule>::append(rule);
//kdDebug( 6080 ) << "appending StyleRule!" << endl;
}
}
else if(item->isImportRule())
{
CSSImportRuleImpl *import = static_cast<CSSImportRuleImpl *>(item);
// ### check media type
StyleSheetImpl *importedSheet = import->styleSheet();
append(importedSheet);
}
// ### include media, import rules and other
}
sort();
}
kdelibs'CSSStyleSelectorList::append() (./kdelibs/khtml/css/cssstyleselector.cpp:398)
void CSSStyleSelectorList::append(CSSStyleRuleImpl *rule)
{
QList<CSSSelector> *s = rule->selector();
for(int j = 0; j < (int)s->count(); j++)
{
CSSOrderedRule *r = new CSSOrderedRule(rule, s->at(j), count());
inSort(r);
}
}
kdelibs'CSSStyleSelectorList::collect() (./kdelibs/khtml/css/cssstyleselector.cpp:408)
void CSSStyleSelectorList::collect(CSSOrderedPropertyList *propsToApply, DOM::ElementImpl *e,
int offset, int important)
{
int i;
int num = count();
for(i = 0; i< num; i++)
{
if(at(i)->checkSelector(e))
{
//kdDebug( 6080 ) << "found matching rule for element " << e->id() << endl;
CSSStyleDeclarationImpl *decl = at(i)->rule->declaration();
propsToApply->append(decl, offset + at(i)->index, important);
}
}
}
// -------------------------------------------------------------------------