OSDN Git Service

Revert "remove unused StyleSelector::freeNode()"
authorIvailo Monev <xakepa10@laimg.moc>
Sat, 20 Jun 2020 16:36:11 +0000 (16:36 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Sat, 20 Jun 2020 16:38:09 +0000 (16:38 +0000)
This reverts commit 0ecbc71d82bbdfb41953229981f4dd9cd9654d24.

used by selector in CSS parser test

src/gui/styles/qstylesheetstyle.cpp
src/gui/text/qcssparser.cpp
src/gui/text/qcssparser_p.h
src/gui/text/qtexthtmlparser.cpp
src/svg/qsvghandler.cpp

index c8c1924..0e4c484 100644 (file)
@@ -1480,6 +1480,8 @@ public:
     { NodePtr n; n.ptr = 0; return n; }
     NodePtr duplicateNode(NodePtr node) const
     { return node; }
+    void freeNode(NodePtr) const
+    { }
 
 private:
     mutable QHash<const QWidget *, QHash<QString, QString> > m_attributeCache;
index 759a326..af5fb8a 100644 (file)
@@ -1824,9 +1824,13 @@ bool StyleSelector::selectorMatches(const Selector &selector, NodePtr node)
         if (sel.relationToNext == BasicSelector::MatchNextSelectorIfAncestor
             || sel.relationToNext == BasicSelector::MatchNextSelectorIfParent) {
 
-            node = parentNode(node);
+            NodePtr nextParent = parentNode(node);
+            freeNode(node);
+            node = nextParent;
        } else if (sel.relationToNext == BasicSelector::MatchNextSelectorIfPreceeds) {
-            node = previousSiblingNode(node);
+            NodePtr previousSibling = previousSiblingNode(node);
+            freeNode(node);
+            node = previousSibling;
        }
         if (isNullNode(node)) {
             match = false;
@@ -1834,6 +1838,7 @@ bool StyleSelector::selectorMatches(const Selector &selector, NodePtr node)
         }
    } while (i >= 0 && (match || sel.relationToNext == BasicSelector::MatchNextSelectorIfAncestor));
 
+    freeNode(node);
 
     return match;
 }
index 8285459..81b903f 100644 (file)
@@ -649,6 +649,7 @@ public:
     virtual NodePtr parentNode(NodePtr node) const = 0;
     virtual NodePtr previousSiblingNode(NodePtr node) const = 0;
     virtual NodePtr duplicateNode(NodePtr node) const = 0;
+    virtual void freeNode(NodePtr node) const = 0;
 
     QVector<StyleSheet> styleSheets;
     QString medium;
index f0c2a52..a4068bb 100644 (file)
@@ -1729,6 +1729,7 @@ public:
     virtual NodePtr parentNode(NodePtr node) const;
     virtual NodePtr previousSiblingNode(NodePtr node) const;
     virtual NodePtr duplicateNode(NodePtr node) const;
+    virtual void freeNode(NodePtr node) const;
 
 private:
     const QTextHtmlParser *parser;
@@ -1803,6 +1804,10 @@ QCss::StyleSelector::NodePtr QTextHtmlStyleSelector::previousSiblingNode(NodePtr
     return sibling;
 }
 
+void QTextHtmlStyleSelector::freeNode(NodePtr) const
+{
+}
+
 void QTextHtmlParser::resolveStyleSheetImports(const QCss::StyleSheet &sheet)
 {
     for (int i = 0; i < sheet.importRules.count(); ++i) {
index f701b20..5f2aa28 100644 (file)
@@ -463,6 +463,10 @@ public:
         n.id  = node.id;
         return n;
     }
+    virtual void freeNode(NodePtr node) const
+    {
+        Q_UNUSED(node);
+    }
 };
 
 // '0' is 0x30 and '9' is 0x39