2006-08-26 Eric Seidel <eric@eseidel.com>
authoreseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 27 Aug 2006 07:09:16 +0000 (07:09 +0000)
committereseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 27 Aug 2006 07:09:16 +0000 (07:09 +0000)
        Reviewed by hyatt.

        pointer-events attribute does not work.
        http://bugzilla.opendarwin.org/show_bug.cgi?id=10415

        * kcanvas/RenderPath.cpp:
        (WebCore::RenderPath::pointerEventsHitRules): new function to contain pointer-events hit logic
        (WebCore::RenderPath::nodeAtPoint): respect pointer-events property
        * kcanvas/RenderPath.h:
        (WebCore::RenderPath::PointerEventsHitRules::PointerEventsHitRules):
        * ksvg2/css/SVGCSSParser.cpp:
        (WebCore::CSSParser::parseSVGValue):
        * ksvg2/svg/SVGPaint.cpp: Fix this to use a real enum value
        (WebCore::SVGPaint::SVGPaint):
        (WebCore::SVGPaint::paintType):
        (WebCore::SVGPaint::uri):
        (WebCore::SVGPaint::setUri):
        (WebCore::SVGPaint::setPaint):
        * ksvg2/svg/SVGPaint.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16053 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/svg/custom/pointer-events-path-expected.checksum [new file with mode: 0644]
LayoutTests/svg/custom/pointer-events-path-expected.png [new file with mode: 0644]
LayoutTests/svg/custom/pointer-events-path-expected.txt [new file with mode: 0644]
LayoutTests/svg/custom/pointer-events-path.svg [new file with mode: 0644]
WebCore/ChangeLog
WebCore/kcanvas/RenderPath.cpp
WebCore/kcanvas/RenderPath.h
WebCore/ksvg2/css/SVGCSSParser.cpp
WebCore/ksvg2/svg/SVGPaint.cpp
WebCore/ksvg2/svg/SVGPaint.h

index 078788a..09888ae 100644 (file)
@@ -1,3 +1,15 @@
+2006-08-26  Eric Seidel  <eric@eseidel.com>
+
+        Reviewed by hyatt.
+        
+        Test case for: pointer-events does not work.
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=10415
+
+        * svg/custom/pointer-events-path-expected.checksum: Added.
+        * svg/custom/pointer-events-path-expected.png: Added.
+        * svg/custom/pointer-events-path-expected.txt: Added.
+        * svg/custom/pointer-events-path.svg: Added.
+
 2006-08-27  Rob Buis  <buis@kde.org>
 
         Reviewed by Eric.
diff --git a/LayoutTests/svg/custom/pointer-events-path-expected.checksum b/LayoutTests/svg/custom/pointer-events-path-expected.checksum
new file mode 100644 (file)
index 0000000..3a8c0b4
--- /dev/null
@@ -0,0 +1 @@
+7f45327d19a6b416dc13d65e96ac18aa
\ No newline at end of file
diff --git a/LayoutTests/svg/custom/pointer-events-path-expected.png b/LayoutTests/svg/custom/pointer-events-path-expected.png
new file mode 100644 (file)
index 0000000..f66f1b7
Binary files /dev/null and b/LayoutTests/svg/custom/pointer-events-path-expected.png differ
diff --git a/LayoutTests/svg/custom/pointer-events-path-expected.txt b/LayoutTests/svg/custom/pointer-events-path-expected.txt
new file mode 100644 (file)
index 0000000..c172e35
--- /dev/null
@@ -0,0 +1,774 @@
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 19 of #text > text > svg > #document to 19 of #text > text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 19 of #text > text > svg > #document to 19 of #text > text > svg > #document toDOMRange:range from 19 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 19 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > g > svg > #document to 0 of text > g > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document toDOMRange:range from 0 of #text > text > svg > #document to 0 of text > svg > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+    KCanvasContainer {svg} at (80,20) size 472x589
+      RenderSVGText {text} at (0,0) size 785x18
+        RenderText {#text} at (0,0) size 107x18
+          text run at (0,0) width 107: "Visibility: visible"
+      RenderSVGText {text} at (0,0) size 785x18
+        RenderText {#text} at (0,0) size 109x18
+          text run at (0,0) width 109: "Visibility: hidden"
+      RenderSVGText {text} at (0,0) size 785x18
+        RenderText {#text} at (0,0) size 60x18
+          text run at (0,0) width 60: "Example:"
+      RenderSVGText {text} at (0,0) size 785x18
+        RenderText {#text} at (0,0) size 49x18
+          text run at (0,0) width 49: "Hit Fill:"
+      RenderSVGText {text} at (0,0) size 785x18
+        RenderText {#text} at (0,0) size 69x18
+          text run at (0,0) width 69: "Hit Stroke:"
+      KCanvasContainer {g} at (80,20) size 472x589
+        KCanvasItem {rect} at (80,20) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M80.00,20.00L130.00,20.00L130.00,70.00L80.00,70.00"]
+        RenderSVGText {text} at (0,0) size 785x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 785x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 785x18
+          RenderText {#text} at (0,0) size 88x18
+            text run at (0,0) width 88: "visiblePainted"
+        KCanvasItem {rect} at (100,100) size 50x50 [data="M100.00,100.00L150.00,100.00L150.00,150.00L100.00,150.00"]
+        RenderSVGText {text} at (0,0) size 785x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 785x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,97) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,100.00L207.00,100.00L207.00,150.00L157.00,150.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (214,100) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,100.00L264.00,100.00L264.00,150.00L214.00,150.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (268,97) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,100.00L321.00,100.00L321.00,150.00L271.00,150.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (328,100) size 50x50 [data="M328.00,100.00L378.00,100.00L378.00,150.00L328.00,150.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,97) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,100.00L435.00,100.00L435.00,150.00L385.00,150.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (442,100) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,100.00L492.00,100.00L492.00,150.00L442.00,150.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (496,97) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,100.00L549.00,100.00L549.00,150.00L499.00,150.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 62x18
+            text run at (0,0) width 62: "visibleFill"
+        KCanvasItem {rect} at (100,157) size 50x50 [data="M100.00,157.00L150.00,157.00L150.00,207.00L100.00,207.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,154) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,157.00L207.00,157.00L207.00,207.00L157.00,207.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (214,157) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,157.00L264.00,157.00L264.00,207.00L214.00,207.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (268,154) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,157.00L321.00,157.00L321.00,207.00L271.00,207.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (328,157) size 50x50 [data="M328.00,157.00L378.00,157.00L378.00,207.00L328.00,207.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,154) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,157.00L435.00,157.00L435.00,207.00L385.00,207.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (442,157) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,157.00L492.00,157.00L492.00,207.00L442.00,207.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (496,154) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,157.00L549.00,157.00L549.00,207.00L499.00,207.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 82x18
+            text run at (0,0) width 82: "visibleStroke"
+        KCanvasItem {rect} at (100,214) size 50x50 [data="M100.00,214.00L150.00,214.00L150.00,264.00L100.00,264.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,211) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,214.00L207.00,214.00L207.00,264.00L157.00,264.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (214,214) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,214.00L264.00,214.00L264.00,264.00L214.00,264.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (268,211) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,214.00L321.00,214.00L321.00,264.00L271.00,264.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (328,214) size 50x50 [data="M328.00,214.00L378.00,214.00L378.00,264.00L328.00,264.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,211) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,214.00L435.00,214.00L435.00,264.00L385.00,264.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (442,214) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,214.00L492.00,214.00L492.00,264.00L442.00,264.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (496,211) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,214.00L549.00,214.00L549.00,264.00L499.00,264.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 41x18
+            text run at (0,0) width 41: "visible"
+        KCanvasItem {rect} at (100,271) size 50x50 [data="M100.00,271.00L150.00,271.00L150.00,321.00L100.00,321.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,268) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,271.00L207.00,271.00L207.00,321.00L157.00,321.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (214,271) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,271.00L264.00,271.00L264.00,321.00L214.00,321.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (268,268) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,271.00L321.00,271.00L321.00,321.00L271.00,321.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (328,271) size 50x50 [data="M328.00,271.00L378.00,271.00L378.00,321.00L328.00,321.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,268) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,271.00L435.00,271.00L435.00,321.00L385.00,321.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (442,271) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,271.00L492.00,271.00L492.00,321.00L442.00,321.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (496,268) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,271.00L549.00,271.00L549.00,321.00L499.00,321.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 46x18
+            text run at (0,0) width 46: "painted"
+        KCanvasItem {rect} at (100,328) size 50x50 [data="M100.00,328.00L150.00,328.00L150.00,378.00L100.00,378.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,325) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,328.00L207.00,328.00L207.00,378.00L157.00,378.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (214,328) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,328.00L264.00,328.00L264.00,378.00L214.00,378.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (268,325) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,328.00L321.00,328.00L321.00,378.00L271.00,378.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (328,328) size 50x50 [data="M328.00,328.00L378.00,328.00L378.00,378.00L328.00,378.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,325) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,328.00L435.00,328.00L435.00,378.00L385.00,378.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (442,328) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,328.00L492.00,328.00L492.00,378.00L442.00,378.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (496,325) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,328.00L549.00,328.00L549.00,378.00L499.00,378.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 17x18
+            text run at (0,0) width 17: "fill"
+        KCanvasItem {rect} at (100,385) size 50x50 [data="M100.00,385.00L150.00,385.00L150.00,435.00L100.00,435.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,382) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,385.00L207.00,385.00L207.00,435.00L157.00,435.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (214,385) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,385.00L264.00,385.00L264.00,435.00L214.00,435.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (268,382) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,385.00L321.00,385.00L321.00,435.00L271.00,435.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (328,385) size 50x50 [data="M328.00,385.00L378.00,385.00L378.00,435.00L328.00,435.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,382) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,385.00L435.00,385.00L435.00,435.00L385.00,435.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (442,385) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,385.00L492.00,385.00L492.00,435.00L442.00,435.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (496,382) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,385.00L549.00,385.00L549.00,435.00L499.00,435.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 38x18
+            text run at (0,0) width 38: "stroke"
+        KCanvasItem {rect} at (100,442) size 50x50 [data="M100.00,442.00L150.00,442.00L150.00,492.00L100.00,492.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,439) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,442.00L207.00,442.00L207.00,492.00L157.00,492.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (214,442) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,442.00L264.00,442.00L264.00,492.00L214.00,492.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (268,439) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,442.00L321.00,442.00L321.00,492.00L271.00,492.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (328,442) size 50x50 [data="M328.00,442.00L378.00,442.00L378.00,492.00L328.00,492.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,439) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,442.00L435.00,442.00L435.00,492.00L385.00,492.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (442,442) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,442.00L492.00,442.00L492.00,492.00L442.00,492.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (496,439) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,442.00L549.00,442.00L549.00,492.00L499.00,492.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 15x18
+            text run at (0,0) width 15: "all"
+        KCanvasItem {rect} at (100,499) size 50x50 [data="M100.00,499.00L150.00,499.00L150.00,549.00L100.00,549.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,496) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,499.00L207.00,499.00L207.00,549.00L157.00,549.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (214,499) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,499.00L264.00,499.00L264.00,549.00L214.00,549.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (268,496) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,499.00L321.00,499.00L321.00,549.00L271.00,549.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (328,499) size 50x50 [data="M328.00,499.00L378.00,499.00L378.00,549.00L328.00,549.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,496) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,499.00L435.00,499.00L435.00,549.00L385.00,549.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (442,499) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,499.00L492.00,499.00L492.00,549.00L442.00,549.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        KCanvasItem {rect} at (496,496) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,499.00L549.00,499.00L549.00,549.00L499.00,549.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 27x18
+            text run at (0,0) width 27: "HIT"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "none"
+        KCanvasItem {rect} at (100,556) size 50x50 [data="M100.00,556.00L150.00,556.00L150.00,606.00L100.00,606.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (154,553) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M157.00,556.00L207.00,556.00L207.00,606.00L157.00,606.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (214,556) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M214.00,556.00L264.00,556.00L264.00,606.00L214.00,606.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (268,553) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M271.00,556.00L321.00,556.00L321.00,606.00L271.00,606.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (328,556) size 50x50 [data="M328.00,556.00L378.00,556.00L378.00,606.00L328.00,606.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (382,553) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [data="M385.00,556.00L435.00,556.00L435.00,606.00L385.00,606.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (442,556) size 50x50 [fill={[type=SOLID] [color=#FFA500]}] [data="M442.00,556.00L492.00,556.00L492.00,606.00L442.00,606.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        KCanvasItem {rect} at (496,553) size 56x56 [stroke={[type=SOLID] [color=#0000FF] [stroke width=6.00]}] [fill={[type=SOLID] [color=#FFA500]}] [data="M499.00,556.00L549.00,556.00L549.00,606.00L499.00,606.00"]
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+        RenderSVGText {text} at (0,0) size 800x18
+          RenderText {#text} at (0,0) size 28x18
+            text run at (0,0) width 28: "miss"
+selection start: position 0 of child 0 {#text} of child 5 {text} of child 0 {svg} of document
+selection end:   position 0 of child 7 {text} of child 0 {svg} of document
diff --git a/LayoutTests/svg/custom/pointer-events-path.svg b/LayoutTests/svg/custom/pointer-events-path.svg
new file mode 100644 (file)
index 0000000..9bdf38e
--- /dev/null
@@ -0,0 +1,122 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" onload="fillTestContent()">
+  <style type="text/css">
+    rect {
+      stroke-width: 6px;
+    }
+  </style>
+  <script type="text/javascript">
+  <![CDATA[
+    
+    if (window.layoutTestController)
+        layoutTestController.waitUntilDone();
+  
+    var visibleValues = [ 'visible', 'hidden' ];
+    var fillValues = ['none', 'orange' ];
+    var strokeValues = ['none', 'blue' ];
+  
+    var pointerEventsValues = ['visiblePainted', 'visibleFill', 'visibleStroke', 'visible', 'painted', 'fill', 'stroke', 'all', 'none'];
+  
+    var leftEdge = 100;
+    var topEdge = 100;
+    
+    var rectSpacing = 57;
+  
+    var svgNS = "http://www.w3.org/2000/svg";
+    
+    function clickHit(event, identifierString) {
+      // This is my cheap hack to see if we hit the stroke.
+      if ((event.clientX - parseInt(event.target.getAttribute('x'))) == 0) {
+        var strokeText = document.getElementById('stroke-text' + identifierString);
+        strokeText.textContent = 'HIT';
+      }
+      var fillText = document.getElementById('fill-text' + identifierString);
+      fillText.textContent = 'HIT';
+    }
+  
+    function fillTestContent() {    
+      var xOffset = leftEdge;
+      var yOffset = topEdge;
+    
+      var testContent = document.getElementById("test-content");
+    
+      for (var pi = 0; pi < pointerEventsValues.length; pi++) {
+        var eventLabel = document.createElementNS(svgNS, 'text');
+        eventLabel.setAttribute('x', 0);
+        eventLabel.setAttribute('y', yOffset + 30);
+        eventLabel.textContent = pointerEventsValues[pi];
+        testContent.appendChild(eventLabel);
+      
+        for (var vi = 0; vi < visibleValues.length; vi++) {
+          for (var fi = 0; fi < fillValues.length; fi++) {
+            for (var si = 0; si < strokeValues.length; si++) {
+            
+              var identString = "_" + pi + "_" + vi + "_" + fi + "_" + si;
+            
+              var rect = document.createElementNS(svgNS, 'rect');
+              rect.setAttribute('x', xOffset);
+              rect.setAttribute('y', yOffset);
+              rect.setAttribute('width', 50);
+              rect.setAttribute('height', 50);
+              rect.setAttribute('visibility', visibleValues[vi]);
+              rect.setAttribute('fill', fillValues[fi]);
+              rect.setAttribute('stroke', strokeValues[si]);
+              rect.setAttribute('pointer-events', pointerEventsValues[pi]);
+              rect.setAttribute('onclick', 'clickHit(evt, "' + identString + '")');
+              
+              testContent.appendChild(rect);
+            
+              var fillText = document.createElementNS(svgNS, 'text');
+              fillText.setAttribute('x', xOffset + 5);
+              fillText.setAttribute('y', yOffset + 20);
+              fillText.textContent = "miss";
+              fillText.setAttribute('id', 'fill-text' + identString);
+              fillText.setAttribute('pointer-events', 'none');
+              testContent.appendChild(fillText);
+            
+              var stokeText = document.createElementNS(svgNS, 'text');
+              stokeText.setAttribute('x', xOffset + 5);
+              stokeText.setAttribute('y', yOffset + 40);
+              stokeText.textContent = "miss";
+              stokeText.setAttribute('id', 'stroke-text' + identString);
+              stokeText.setAttribute('pointer-events', 'none');
+              testContent.appendChild(stokeText);
+              
+              if (window.eventSender) {
+                // Stroke click
+                eventSender.mouseMoveTo(xOffset, yOffset);
+                eventSender.mouseDown();
+                eventSender.mouseUp();
+                
+                // Fill click
+                eventSender.mouseMoveTo(xOffset + 25, yOffset + 25);
+                eventSender.mouseDown();
+                eventSender.mouseUp();
+              }
+              xOffset += rectSpacing;
+            }
+          }
+        }
+        xOffset = leftEdge;
+        yOffset += rectSpacing;
+      }
+      
+      if (window.layoutTestController)
+        layoutTestController.notifyDone();
+    }
+  ]]>
+  </script>
+  
+  <text x="110" y="90">Visibility: visible</text>
+  <text x="340" y="90">Visibility: hidden</text>
+  
+  <text x="10" y="18">Example:</text>
+  
+  <text x="5" y="40">Hit Fill:</text>
+  <text x="5" y="60">Hit Stroke:</text>
+  <g id="test-content">
+    <rect x="80" y="20" width="50" height="50" fill="orange" />
+    <text x="85" y="40">HIT</text>
+    <text x="85" y="60">miss</text>
+  </g>
+</svg>
index 9e4e546..5388c54 100644 (file)
@@ -1,3 +1,25 @@
+2006-08-26  Eric Seidel  <eric@eseidel.com>
+
+        Reviewed by hyatt.
+
+        pointer-events attribute does not work.
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=10415
+
+        * kcanvas/RenderPath.cpp:
+        (WebCore::RenderPath::pointerEventsHitRules): new function to contain pointer-events hit logic
+        (WebCore::RenderPath::nodeAtPoint): respect pointer-events property
+        * kcanvas/RenderPath.h:
+        (WebCore::RenderPath::PointerEventsHitRules::PointerEventsHitRules):
+        * ksvg2/css/SVGCSSParser.cpp:
+        (WebCore::CSSParser::parseSVGValue):
+        * ksvg2/svg/SVGPaint.cpp: Fix this to use a real enum value
+        (WebCore::SVGPaint::SVGPaint):
+        (WebCore::SVGPaint::paintType):
+        (WebCore::SVGPaint::uri):
+        (WebCore::SVGPaint::setUri):
+        (WebCore::SVGPaint::setPaint):
+        * ksvg2/svg/SVGPaint.h:
+
 2006-08-27  Rob Buis  <buis@kde.org>
 
         Reviewed by Eric.
index bf6d151..1792022 100644 (file)
@@ -263,15 +263,73 @@ void RenderPath::absoluteRects(DeprecatedValueList<IntRect>& rects, int _tx, int
     rects.append(getAbsoluteRepaintRect());
 }
 
+RenderPath::PointerEventsHitRules RenderPath::pointerEventsHitRules()
+{
+    PointerEventsHitRules hitRules;
+    
+    switch (style()->svgStyle()->pointerEvents())
+    {
+        case PE_VISIBLE_PAINTED:
+            hitRules.requireVisible = true;
+            hitRules.requireFill = true;
+            hitRules.requireStroke = true;
+            hitRules.canHitFill = true;
+            hitRules.canHitStroke = true;
+            break;
+        case PE_VISIBLE_FILL:
+            hitRules.requireVisible = true;
+            hitRules.canHitFill = true;
+            break;
+        case PE_VISIBLE_STROKE:
+            hitRules.requireVisible = true;
+            hitRules.canHitStroke = true;
+            break;
+        case PE_VISIBLE:
+            hitRules.requireVisible = true;
+            hitRules.canHitFill = true;
+            hitRules.canHitStroke = true;
+            break;
+        case PE_PAINTED:
+            hitRules.requireFill = true;
+            hitRules.requireStroke = true;
+            hitRules.canHitFill = true;
+            hitRules.canHitStroke = true;
+            break;
+        case PE_FILL:
+            hitRules.canHitFill = true;
+            break;
+        case PE_STROKE:
+            hitRules.canHitStroke = true;
+            break;
+        case PE_ALL:
+            hitRules.canHitFill = true;
+            hitRules.canHitStroke = true;
+            break;
+        case PE_NONE:
+            // nothing to do here, defaults are all false.
+            break;
+    }
+    return hitRules;
+}
+
 bool RenderPath::nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty, HitTestAction hitTestAction)
 {
     // We only draw in the forground phase, so we only hit-test then.
     if (hitTestAction != HitTestForeground)
         return false;
-
-    if (strokeContains(FloatPoint(_x, _y)) || fillContains(FloatPoint(_x, _y))) {
-        setInnerNode(info);
-        return true;
+    
+    PointerEventsHitRules hitRules = pointerEventsHitRules();
+    
+    bool isVisible = (style()->visibility() == VISIBLE);
+    if (isVisible || !hitRules.requireVisible) {
+        bool hasFill = (style()->svgStyle()->fillPaint() && style()->svgStyle()->fillPaint()->paintType() != SVG_PAINTTYPE_NONE);
+        bool hasStroke = (style()->svgStyle()->strokePaint() && style()->svgStyle()->strokePaint()->paintType() != SVG_PAINTTYPE_NONE);
+        FloatPoint hitPoint(_x,_y);
+        if ((hitRules.canHitStroke && (hasStroke || !hitRules.requireStroke) && strokeContains(hitPoint))
+            || (hitRules.canHitFill && (hasFill || !hitRules.requireFill) && fillContains(hitPoint))) {
+            setInnerNode(info);
+            return true;
+        }
     }
     return false;
 }
index b185a03..d613ee1 100644 (file)
@@ -71,13 +71,32 @@ public:
     virtual void absoluteRects(DeprecatedValueList<IntRect>& rects, int tx, int ty);
 
     virtual bool nodeAtPoint(NodeInfo&, int x, int y, int tx, int ty, HitTestAction);
+    
+    // FIXME: When the other SVG classes get pointer-events support this should be moved elsewhere
+    struct PointerEventsHitRules {
+        PointerEventsHitRules()
+        : requireVisible(false)
+        , requireFill(false)
+        , requireStroke(false)
+        , canHitStroke(false)
+        , canHitFill(false)
+    {}
+        
+        bool requireVisible;
+        bool requireFill;
+        bool requireStroke;
+        bool canHitStroke;
+        bool canHitFill;  
+    };
 
 protected:
     virtual void drawMarkersIfNeeded(GraphicsContext*, const FloatRect&, const KCanvasPath*) const = 0;
 
 private:
     FloatRect strokeBBox() const;
-    FloatPoint mapAbsolutePointToLocal(const FloatPoint& point) const;
+    FloatPoint mapAbsolutePointToLocal(const FloatPoint&) const;
+    
+    PointerEventsHitRules pointerEventsHitRules();
 
     class Private;
     Private *d;
index f4a3c3a..cfd66d7 100644 (file)
@@ -188,8 +188,8 @@ bool CSSParser::parseSVGValue(int propId, bool important)
 
     case SVGCSS_PROP_POINTER_EVENTS:
     // visiblePainted | visibleFill | visibleStroke | visible |
-    // painted | fill | stroke || all | inherit
-        if (id == CSS_VAL_VISIBLE || 
+    // painted | fill | stroke | none | all | inherit
+        if (id == CSS_VAL_VISIBLE || id == CSS_VAL_NONE ||
           (id >= SVGCSS_VAL_VISIBLEPAINTED && id <= SVGCSS_VAL_ALL))
             valid_primitive = true;
         break;
index 2d65e51..680b05c 100644 (file)
@@ -29,27 +29,27 @@ namespace WebCore {
 
 SVGPaint::SVGPaint()
     : SVGColor()
+    , m_paintType(SVG_PAINTTYPE_UNKNOWN)
 {
-    m_paintType = SVG_PAINTTYPE_UNKNOWN;
 }
 
-SVGPaint::SVGPaint(StringImpl *uri)
+SVGPaint::SVGPaint(StringImpluri)
     : SVGColor()
+    , m_paintType(SVG_PAINTTYPE_URI)
 {
-    m_paintType = SVG_PAINTTYPE_URI;
     setUri(uri);
 }
 
-SVGPaint::SVGPaint(unsigned short paintType)
+SVGPaint::SVGPaint(SVGPaintType paintType)
     : SVGColor()
+    , m_paintType(paintType)
 {
-    m_paintType = paintType;
 }
 
-SVGPaint::SVGPaint(unsigned short paintType, StringImpl *uri, StringImpl *rgbPaint, StringImpl *)
+SVGPaint::SVGPaint(SVGPaintType paintType, StringImpl* uri, StringImpl* rgbPaint, StringImpl*)
     : SVGColor(rgbPaint)
+    , m_paintType(paintType)
 {
-    m_paintType = paintType;
     setUri(uri);
 }
 
@@ -57,22 +57,22 @@ SVGPaint::~SVGPaint()
 {
 }
 
-unsigned short SVGPaint::paintType() const
+SVGPaintType SVGPaint::paintType() const
 {
     return m_paintType;
 }
 
-StringImpl *SVGPaint::uri() const
+StringImplSVGPaint::uri() const
 {
     return m_uri.impl();
 }
 
-void SVGPaint::setUri(StringImpl *uri)
+void SVGPaint::setUri(StringImpluri)
 {
     m_uri = uri;
 }
 
-void SVGPaint::setPaint(unsigned short paintType, StringImpl *uri, StringImpl *rgbPaint, StringImpl *)
+void SVGPaint::setPaint(SVGPaintType paintType, StringImpl* uri, StringImpl* rgbPaint, StringImpl*)
 {
     m_paintType = paintType;
 
index b7247ea..6db43db 100644 (file)
@@ -24,6 +24,7 @@
 #define KSVG_SVGPaintImpl_H
 #ifdef SVG_SUPPORT
 
+#include "ksvg.h"
 #include <SVGColor.h>
 
 namespace WebCore {
@@ -31,22 +32,22 @@ namespace WebCore {
     class SVGPaint : public SVGColor {
     public:
         SVGPaint();
-        SVGPaint(StringImpl *uri);
-        SVGPaint(unsigned short paintType);
-        SVGPaint(unsigned short paintType, StringImpl *uri, StringImpl *rgbPaint = 0, StringImpl *iccPaint = 0);
+        SVGPaint(StringImpluri);
+        SVGPaint(SVGPaintType);
+        SVGPaint(SVGPaintType, StringImpl* uri, StringImpl* rgbPaint = 0, StringImpl* iccPaint = 0);
         virtual ~SVGPaint();
 
         // 'SVGPaint' functions
-        unsigned short paintType() const;
-        StringImpl *uri() const;
+        SVGPaintType paintType() const;
+        StringImpluri() const;
 
-        void setUri(StringImpl *uri);
-        void setPaint(unsigned short paintType, StringImpl *uri, StringImpl *rgbPaint, StringImpl *iccPaint);
+        void setUri(StringImpl*);
+        void setPaint(SVGPaintType, StringImpl* uri, StringImpl* rgbPaint, StringImpl* iccPaint);
 
         virtual String cssText() const;
 
     private:
-        unsigned short m_paintType;
+        SVGPaintType m_paintType;
         String m_uri;
     };