W3C home > Mailing lists > Public > www-svg@w3.org > December 2008

Re: Event handling in clipping conditions

From: Doug Schepers <schepers@w3.org>
Date: Thu, 04 Dec 2008 10:43:58 -0500
Message-ID: <4937FABE.1050507@w3.org>
To: Helder Magalhães <helder.magalhaes@gmail.com>
CC: SVG WG <www-svg@w3.org>

Hi, Helder-

The SVG WG has resolved on an erratum [1] which we believe will clarify
this issue:

14.3.6 Clipping paths and geometry

A clipping path is conceptually equivalent to a custom viewport for the
referencing element. Thus, it affects the rendering of an element, but
not the element's inherent geometry. The bounding box of a clipped
element (that is, an element which references a 'clipPath' element via a
'clip-path' property) must remain the same as if it were not clipped.

With regards to pointer-events, while the visible parts of a clipped
element receive pointer events normally, parts of a clipped element
which are outside the extent of the clipping path must be treated as if
they have a 'visibility' property value of 'hidden'. Therefore, an
element which has 'pointer-events' property values which depend upon the
visibility of the element (i.e. 'visiblePainted', 'visibleFill',
'visibleStroke', 'visible') will not receive pointer events for the
occluded parts of the element. For example, a circle with a radius of 10
which is clipped to a circle with a radius of 5 will not receive 'click'
events outside the smaller radius if it has the default 'pointer-events'
property value of 'visiblePainted', but will if has the property value
of 'all'.

We believe that this is the most consistent and predictable behavior,
and that it should be relatively simple to implement.  Note that,
because this was not previously specified, there is currently a lack of
interoperability between implementations, so all the implementations
will have a bit of work to do to match this behavior.  I will put
together a few tests to make sure that it's interoperable.

The tests will include:
 * testing to make sure the bounding box of a clipped shape is correct
 * testing that the visible part of the shape receives pointer events
 * testing that the occluded part of the shape doesn't receive pointer
events with the default pointer-event value of 'visiblePainted', or
other 'visible...' values
 * testing that the occluded part of the shape does receive pointer
events with other pointer-event values

Can anyone think of other useful tests?



Helder Magalhães wrote (on 11/26/08 1:43 PM):
> Hello SVG-WG! :-)
> Following a thread [1] (which contains a test case) within the Batik's
> mailing list, the doubt is whether event handling should occur
> whenever relevant graphical content is under the pointer. Quoting
> Thomas DeWeese:
>   Neither SVG 1.1 or SVG 1.2 Tiny says anything about clipping
>   with respect to when 'relevant graphical content is under the pointer'. [2]
> I've crawled through the potentially relevant parts of the
> specification [3] [4] and through the SVG-WG mailing list archive [5]
> and also couldn't find an answer for this. Could some pointers be
> provided and/or the WG pronounce about this (somehow tricky) detail?
> Best regards,
>   Helder Magalhães
> [1] http://www.nabble.com/Likely-Batik-bug-with-SVG-scrollbars-td20676287.html
> [2] https://issues.apache.org/bugzilla/show_bug.cgi?id=46289#c0
> [3] http://www.w3.org/TR/SVGTiny12/interact.html#EventDispatching
> [4] http://www.w3.org/TR/SVGTiny12/script.html#EventHandling
> [5] http://lists.w3.org/Archives/Public/www-svg/
Received on Thursday, 4 December 2008 15:44:09 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:29:39 UTC