- From: Cameron McCormack <cam@mcc.id.au>
- Date: Fri, 24 Jun 2011 15:07:17 +1200
- To: Charles Pritchard <chuck@jumis.com>
- Cc: Richard Schwerdtfeger <schwer@us.ibm.com>, Cynthia Shelly <cyns@microsoft.com>, david.bolter@gmail.com, Frank Olivier <Frank.Olivier@microsoft.com>, Mike@w3.org, public-canvas-api@w3.org, public-html@w3.org, public-html-a11y@w3.org
Cameron McCormack: > > > Right, so this would need special treatment in the <canvas> > > > implementation. It feels a bit weird to me, though. What if a > > > region the canvas is associated with an element that does not have > > > uniform behaviour across the whole area of that element? I can see > > > it working OK for a <button>, but for a <select multiple>, say, > > > the exact mousedown position is going to influence what values are > > > going to be selected. Charles Pritchard: > Yes, so, if the select was dropped you would want to create a bounding > path for the submenu (possibly also for the menu items) and the mouse > down event would be passed down to the element in the DOM subtree to > which it was targeted by the user agent as a result of binding the > path to the element. Should the element not process the mouse event it > can bubble up to the parent, like it does for HTML today. I think I may have misunderstood the proposal, but I am a bit confused now. Clicking on the canvas at a particular point that has been associated with the <select> wouldn’t cause the native <select> element to have its menu drop down, then, or cause any change in what selected value is? Is it up to the script author to listen for a mousedown/ mouseup event on the <select> and modify its value in response to that (emulating the native behaviour of the element)? Cameron McCormack: > > > So normally, I imagine, hit testing would be done either by using > > > isPointInPath() or by custom code looking at a mouse event’s x/y > > > values. I think this proposal doesn’t work with isPointInPath(), > > > though, is that right? Richard Schwerdtfeger: > > I think it would but we would need to incorporate Z order and a > > notion of the last drawn element to compute which element is on top. > > The user agent would need to manage this. Charles Pritchard: > The proposal -can- work with isPointInPath; but developers would prefer > that work is handled for them. (Can as in could be modified to work with isPointInPath, yeah? Because I didn’t see anything in the original proposal about it.) > For a developer to handle it themselves, they'd want the stringify > options: > > canvas.onmousemove = function(event) { > x = processX(event); y = processY(event); > var z = canvas.querySelectorAll("[data-myeasypathdata]"); > z = sortByZIndex(z); > for(var element in z) { > ctx.beginFromPath( element.getAttribute('data-myeasypathdata') ); > if(ctx.isPointInPath(x,y)) { passEvent(element,event); > if(event.cancelBubble) break; } > } > }; > > There's no standard method for sending the path data to the AT. > data-* is simply a private metadata attribute the developer can use. > > We're looking to have setElementPath(path, zIndex) > to expose the AT to the path data active on the screen. I wonder if (and maybe this is similar to what we discussed earlier on www-svg) having an aria-region (or whatever named) attribute on the shadow tree element is a simpler, more direct way of associating the region of the <canvas> that has the focus. -- Cameron McCormack ≝ http://mcc.id.au/
Received on Friday, 24 June 2011 03:08:11 UTC