RE: [pointerevents] Touch action processing model doesn't match IE/Edge behavior around zooming

I spoke with Jacob (and others) here is what I was able to glean from those conversations:

This is covered by this section:

"When a user touches an element, the effect of that touch is determined by the value of the touch-action property and the default touch behaviors on the element and its ancestors. To determine the effect of a touch, find the nearest ancestor (starting from the element itself) that has a default touch behavior. Then examine the touch-action property of each element between the hit tested element and the element with the default touch behavior (including both the hit tested element and the element with the default touch behavior). If the touch-action property of any of those elements disallows the default touch behavior, do nothing. Otherwise allow the element to start considering the touch for the purposes of executing a default touch behavior."

That still correctly describes our behavior, in particular the statement around " find the nearest ancestor (starting from the element itself) that has a default touch behavior"

Does that help? 

-----Original Message-----
From: Rick Byers via GitHub [mailto:sysbot+gh@w3.org] 
Sent: Tuesday, September 8, 2015 7:09 AM
To: public-pointer-events@w3.org
Subject: [pointerevents] Touch action processing model doesn't match IE/Edge behavior around zooming

RByers has just created a new issue for
https://github.com/w3c/pointerevents:


== Touch action processing model doesn't match IE/Edge behavior around  zooming == Hey, The [touch-action processing
model](https://w3c.github.io/pointerevents/#the-touch-action-css-property)
 says:

> To determine the effect of a touch, find the nearest ancestor
(starting from the element itself) that has a default touch behavior. 
Then examine the touch-action property of each element between the hit  tested element and the element with the default touch behavior (including both the hit tested element and the element with the default touch behavior). If the touch-action property of any of those elements disallows the default touch behavior, do nothing. 

This makes sense for scrolling, but what about zooming?

In particular, we've been saying "use `touch-action: manipulation` to disable the click delay" but what if your page has scrollable divs?  
Do you need to re-apply `touch-action manipulation` to each scroller to ensure the click delay is disabled everywhere?  The above spec text  implies that you do. But this sucks for this click-delay use case (means touch-action isn't a complete substitute for fastclick.js afterall).

Happily, this isn't [actually what IE/Edge implement](http://jsbin.com/tipure/).  So I think we should correct the spec text and [blink
implementation](https://code.google.com/p/chromium/issues/detail?id=529295)
 to match the IE / Edge behavior.  I seem to recall some earlier iteration of the spec that referred to the ancestor that implements the specific default touch behavior being considered (as opposed to any "default touch behavior").  I know we agonized over trying to keep  this definition accurate yet simple.  Maybe we need to go back through the history here?

Anyway, if there's agreement that the spec should be corrected to match the Edge behavior, then I can take a crack at coming up with some text for this.  Perhaps we should just be more verbose - describing an algorithm in stages, etc.

@jacobrossi can you describe precisely what the Edge behavior here is to make sure I'm not missing something subtle?

See https://github.com/w3c/pointerevents/issues/19

Received on Friday, 11 September 2015 18:40:30 UTC