discussion about touch events

Pavel Safrata pavel.safrata at oracle.com
Tue Nov 12 02:52:22 PST 2013

The image seems to have been stripped somewhere, trying to attach once more.

On 12.11.2013 11:46, Pavel Safrata wrote:
> Hello Daniel,
> this is quite similar to my idea described earlier. The major 
> difference is the "fair division of capture zones" among siblings. 
> It's an interesting idea, let's explore it. What pops first is that 
> children can also overlap. So I think it would behave like this (green 
> capture zones omitted):
> see attachment
> ..wouldn't it? From user's point of view this seems confusing, both 
> cases look the same but behave differently. Note that in the case on 
> the right, the parent may be still the same, developer only adds a 
> fancy background as a new child and suddenly the red child can't be 
> hit that easily. What do you think? Is it an issue? Or would it not 
> behave this way?
> Regards,
> Pavel
> On 11.11.2013 23:44, Daniel Blaukopf wrote:
>> On Nov 11, 2013, at 11:30 PM, Pavel Safrata <pavel.safrata at oracle.com 
>> <mailto:pavel.safrata at oracle.com>> wrote:
>>> On 11.11.2013 17:49, Tomas Mikula wrote:
>>>> On Mon, Nov 11, 2013 at 1:28 PM, Philipp Dörfler 
>>>> <phdoerfler at gmail.com <mailto:phdoerfler at gmail.com>> wrote:
>>>>> I see the need to be aware of the area that is covered by fingers 
>>>>> rather
>>>>> than just considering that area's center point.
>>>>> I'd guess that this adds a new layer of complexity, though. For 
>>>>> instance:
>>>>> Say we have a button on some background and both the background 
>>>>> and the
>>>>> button do have an onClick listener attached. If you tap the button 
>>>>> in a way
>>>>> that the touched area's center point is outside of the buttons 
>>>>> boundaries -
>>>>> what event will be fired? Will both the background and the button 
>>>>> receive a
>>>>> click event? Or just either the background or the button 
>>>>> exclusively? Will
>>>>> there be a new event type which gets fired in case of such 
>>>>> area-based taps?
>>>>> My suggestion would therefore be to have an additional area tap 
>>>>> event which
>>>>> gives precise information about diameter and center of the tap. 
>>>>> Besides
>>>>> that there should be some kind of "priority" for choosing which 
>>>>> node's
>>>>> onClick will be called.
>>>> What about picking the one that is closest to the center of the touch?
>>> There is always something directly on the center of the touch 
>>> (possibly the scene background, but it can have event handlers too). 
>>> That's what we pick right now.
>>> Pavel
>> What Seeon, Assaf and I discussed earlier was building some fuzziness 
>> into the node picker so that instead of each node capturing only 
>> events directly on top of it:
>> ..nodes at each level of the hierarchy would capture events beyond 
>> their borders as well:
>> In the above, “Parent” would capture touch events within a certain 
>> radius around it, as would its children “Child 1” and “Child 2”. 
>> Since “Child 1” and “Child 2” are peers, they would have a sharp 
>> division between them, a watershed on either side of which events 
>> would go to one child node or the other. This would also apply if the 
>> peer nodes were further apart; they would divide the no-man’s land 
>> between them. Of course this no-man’s land would be part of “Parent” 
>> and could could be touch-sensitive - but we won’t consider “Parent” 
>> as an event target until we have ruled out using one of its 
>> children’s extended capture zones.
>> The capture radius could either be a styleable property on the nodes, 
>> or could be determined by the X and Y size of a touch point as 
>> reported by the touch screen. We’d still be reporting a touch point, 
>> not a touch area. The touch target would be, as now, a single node.
>> This would get us more reliable touch capture at leaf nodes of the 
>> node hierarchy at the expense of it being harder to tap the 
>> background. This is likely to be a good trade-off.
>> Daniel
>>>> Tomas
>>>>> Maybe the draw order / order in the scene graph / z
>>>>> buffer value might be sufficient to model what would happen in the 
>>>>> real,
>>>>> physical world.
>>>>> Am 11.11.2013 13:05 schrieb "Assaf Yavnai" 
>>>>> <assaf.yavnai at oracle.com <mailto:assaf.yavnai at oracle.com>>:
>>>>>> The ascii sketch looked fine on my screen before I sent the mail 
>>>>>> :( I hope
>>>>>> the idea is clear from the text
>>>>>> (now in the reply dialog its also look good)
>>>>>> Assaf
>>>>>> On 11/11/2013 12:51 PM, Assaf Yavnai wrote:
>>>>>>> Hi Guys,
>>>>>>> I hope that I'm right about this, but it seems that touch events 
>>>>>>> in glass
>>>>>>> are translated (and reported) as a single point events (x & y) 
>>>>>>> without an
>>>>>>> area, like pointer events.
>>>>>>> AFAIK, the controls response for touch events same as mouse 
>>>>>>> events (using
>>>>>>> the same pickers) and as a result a button press, for example, 
>>>>>>> will only
>>>>>>> triggered if the x & y of the touch event is within the control 
>>>>>>> area.
>>>>>>> This means that small controls, or even quite large controls (like
>>>>>>> buttons with text) will often get missed because the 'strict' 
>>>>>>> node picking,
>>>>>>> although from a UX point of view it is strange as the user 
>>>>>>> clearly pressed
>>>>>>> on a node (the finger was clearly above it) but nothing happens...
>>>>>>> With current implementation its hard to use small features in 
>>>>>>> controls,
>>>>>>> like scrollbars in lists, and it almost impossible to implement 
>>>>>>> something
>>>>>>> like 'screen navigator' (the series of small dots in the bottom 
>>>>>>> of a smart
>>>>>>> phones screen which allow you to jump directly to a 'far away' 
>>>>>>> screen)
>>>>>>> To illustrate it consider the bellow low resolution sketch, 
>>>>>>> where the "+"
>>>>>>> is the actual x,y reported, the ellipse is the finger touch area 
>>>>>>> and the
>>>>>>> rectangle is the node.
>>>>>>> With current implementation this type of tap will not trigger 
>>>>>>> the node
>>>>>>> handlers
>>>>>>>                 __
>>>>>>>               /     \
>>>>>>>              /       \
>>>>>>>        ___/ __+_ \___    in this scenario the 'button' will not get
>>>>>>> pressed
>>>>>>>        |    \         /    |
>>>>>>>        |___\ ___ / __ |
>>>>>>>               \___/
>>>>>>> If your smart phone support it, turn on the touch debugging 
>>>>>>> options in
>>>>>>> settings and see that each point translate to a quite large 
>>>>>>> circle and what
>>>>>>> ever fall in it, or reasonably close to it, get picked.
>>>>>>> I want to start a discussion to understand if my perspective is 
>>>>>>> accurate
>>>>>>> and to understand what can be done, if any, for the coming 
>>>>>>> release or the
>>>>>>> next one.
>>>>>>> We might use recently opened RT-34136 <https://javafx-jira.kenai.
>>>>>>> com/browse/RT-34136> for logging this, or open a new JIRA for it
>>>>>>> Thanks,
>>>>>>> Assaf

More information about the openjfx-dev mailing list