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

List:       kde-commits
Subject:    KDE/kdelibs/khtml
From:       Dawit Alemayehu <adawit () kde ! org>
Date:       2010-11-10 4:52:15
Message-ID: 20101110045215.9504DAC89E () svn ! kde ! org
[Download RAW message or body]

SVN commit 1194917 by adawit:

Implemented the missing support for querying only selected content

 M  +17 -5     khtml_ext.cpp  


--- trunk/KDE/kdelibs/khtml/khtml_ext.cpp #1194916:1194917
@@ -1106,13 +1106,12 @@
 
 bool KHTMLHtmlExtension::hasSelection() const
 {
-    return KParts::HtmlExtension::hasSelection();
+    return part()->hasSelection();
 }
 
 KParts::SelectorInterface::QueryMethods KHTMLHtmlExtension::supportedQueryMethods() const
 {
-    // TODO: Add support for selected content (SelectedContent)
-    return KParts::SelectorInterface::EntireContent;
+    return (KParts::SelectorInterface::SelectedContent | KParts::SelectorInterface::EntireContent);
 }
 
 static KParts::SelectorInterface::Element convertDomElement(const DOM::ElementImpl* domElem)
@@ -1149,7 +1148,11 @@
         break;
     }    
     case KParts::SelectorInterface::SelectedContent:
-        // TODO: Implement support for selected content...
+        if (part()->hasSelection()) {
+            DOM::Element domElem = part()->selection().cloneContents().querySelector(query);
+            element = convertDomElement(static_cast<DOM::ElementImpl*>(domElem.handle()));
+        }
+        break;        
     default:
         break;
     }
@@ -1184,7 +1187,16 @@
         break;
     }
     case KParts::SelectorInterface::SelectedContent:
-        // TODO: Implement support for selected content...
+        if (part()->hasSelection()) {
+            DOM::NodeList nodes = part()->selection().cloneContents().querySelectorAll(query);
+            const unsigned long len = nodes.length();
+            for (unsigned long i = 0; i < len; ++i) {
+                DOM::NodeImpl* node = nodes.item(i).handle();
+                if (node->isElementNode())
+                    elements.append(convertDomElement(static_cast<DOM::ElementImpl*>(node)));
+            }
+        }
+        break;
     default:
         break;
     }
[prev in list] [next in list] [prev in thread] [next in thread] 

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