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);
	}
    }
}

// -------------------------------------------------------------------------