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