[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/khtml/css
From:       Maks Orlovich <maksim () kde ! org>
Date:       2010-05-30 20:15:07
Message-ID: 20100530201507.553ABAC8C5 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1132486 by orlovich:

Don't create dangerous spurious dependencies on querySelector[All] -- 
they can get dangly.

BUG: 239846


 M  +7 -3      cssstyleselector.cpp  
 M  +2 -1      cssstyleselector.h  


--- trunk/KDE/kdelibs/khtml/css/cssstyleselector.cpp #1132485:1132486
@@ -636,7 +636,7 @@
             selectorsForCheck.append(j);
 
     // build per-element cache summaries.
-    prepareToMatchElement(element);
+    prepareToMatchElement(element, true);
 
     propsToApply.clear();
     pseudoProps.clear();
@@ -779,8 +779,11 @@
     return style;
 }
 
-void CSSStyleSelector::prepareToMatchElement(DOM::ElementImpl* element)
+void CSSStyleSelector::prepareToMatchElement(DOM::ElementImpl* e, bool withDeps)
 {
+    rememberDependencies = withDeps;
+    element              = e;
+
     // build caches for element so it could be used in heuristic for descendant \
selectors  // go up the tree and cache possible tags, classes and ids
     tagCache.clear();
@@ -1312,7 +1315,7 @@
         quint16 tag = sel->tagLocalName.id();
         if (elementTagId == tag || tag == anyLocalName) {
             if (!inited) {
-                prepareToMatchElement(e);
+                prepareToMatchElement(e, false);
                 inited = true;
             }
     
@@ -1329,6 +1332,7 @@
 
 void CSSStyleSelector::addDependency(int dependencyType, ElementImpl* dependency)
 {
+    if (!rememberDependencies) return;
     element->document()->dynamicDomRestyler().addDependency(element, dependency, \
(StructuralDependencyType)dependencyType);  }
 
--- trunk/KDE/kdelibs/khtml/css/cssstyleselector.h #1132485:1132486
@@ -218,7 +218,7 @@
 
         // computes various summaries of the documents' properties, which are used \
in  // the various checkSelector methods for optimizations
-        void prepareToMatchElement(DOM::ElementImpl* e);
+        void prepareToMatchElement(DOM::ElementImpl* e, bool withDeps);
 
         void addDependency(int dependencyType, DOM::ElementImpl* dependency);
         void setupDefaultRootStyle(DOM::DocumentImpl *d=0);
@@ -324,6 +324,7 @@
 	KHTMLView *view;
 	KHTMLPart *part;
 	const KHTMLSettings *settings;
+	bool rememberDependencies;
 	int logicalDpiY;
   	RenderStyle*     m_rootDefaultStyle;
         QVector<int>     m_fontSizes;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic