Touch Events, Scrolling, and Windows Pen

Pavel Safrata pavel.safrata at oracle.com
Mon May 27 09:09:16 PDT 2013


Hi Danno,

On 27.5.2013 17:27, Danno Ferrin wrote:
> One of the things that prompted me to write the TouchyFXy application was
> to get a feel of the event flow before I embarked on recommending fixes to
> some of the quirks.  Here goes.
>
> My first concern is touch scrolling on lists.  If you do a touch scroll on
> a List you wind up selecting the item you lift your finger off of.  And
> this is painfully obvious in Ensemble8 on a Surface Pro, you scroll down
> the screen and BAM you're in a demo if you're not careful where you start
> your scroll.  I would propose that at least in the list control, and
> possibly all controls, that a click/release/down event not be processed if
> the 'synthesized' flag is present  This would need to be done in the
> control logic rather than pushed down through the whole event chain,
> however..  A general audit may be entertaining, but the one annoying me
> right now is the select on touch scroll for lists and touch panes.

I agree and I've filed this issue some time ago:
https://javafx-jira.kenai.com/browse/RT-21091

it also seems to have a duplicate here:
https://javafx-jira.kenai.com/browse/RT-26246

>
> A general solution may be to allow the user to turn off the capture of
> synthesized events, but I would imagine that would need to be explicitly
> turned on by the code to maintain backwards compatibility for apps not
> written with touch in mind.

You can use event filter to turn off synthesized events. Anyway, I 
believe controls need to be fixed to respond properly to the events.

I'll let somebody more familiar with the low-level stuff comment on the 
other issue.
Thanks,
Pavel

>
> My next problem is the pen device on Windows.  The only events captured in
> JavaFX from a pen are mouse events.  To complicate things the "Synthesized"
> flag is set.  This is a bit disconcerting because to the view of a JFX app
> there is no other event for it to be synthesized to.  So I would propose
> the isPenEvent method in /glass/glass-lib-windows/src/ViewContainer.cpp be
> added to check that the 0x80 bit is set by changing the signature
> to 0xFF515780 and the mask to 0xFFFFFF80, making a pen event look just like
> a mouse event, since it only generates mouse events. (the linked MSDN
> article in the code explains the lower 8 bits, and the high bit is a
> pen/touch flag, the logic may need to be more complex).  To distinguish a
> pen tap perhaps we set the direct flag but not the synthesized flag, since
> a pen is direct on the screen (usually).
>
> So am I way off base on these?  Should I work up a patch for these?  Or
> must the current behavior be maintained.



More information about the openjfx-dev mailing list