I created a new bug for the pen support bug, with a tested patch. I
spent way more time getting the build up than doing the fix, such is
native work.
https://javafx-jira.kenai.com/browse/RT-30869
For the pan-select, I attached a fix for list views to the existing
bug. If that approach passes muster I can do the same for tree and
table.
https://javafx-jira.kenai.com/browse/RT-21091
On Tue, May 28, 2013 at 10:46 AM, Anthony Petrov
<anthony.pet...@oracle.com <mailto:anthony.pet...@oracle.com>> wrote:
Sounds good to me.
Danno, could you please prepare a patch for this bug, test it, and
post it for review here?
--
best regards,
Anthony
On 05/28/2013 07:46 PM, Danno Ferrin wrote:
For 8.0 that would be the best solution IMHO.
On May 28, 2013 8:41 AM, "Pavel Safrata"
<pavel.safr...@oracle.com <mailto:pavel.safr...@oracle.com>>
wrote:
So it seems to me that in short term (FX8) the pen should
produce mouse
events with isSynthesized==false. We can introduce something
more advanced
in the future, but right now it should generally work and
the synthesized
flag really seems to be misused here.
Pavel
On 28.5.2013 16:09, Danno Ferrin wrote:
On Tue, May 28, 2013 at 2:44 AM, Anthony Petrov
<anthony.pet...@oracle.com
<mailto:anthony.pet...@oracle.com>>**__wrote:
Hi Danno,
On 05/27/2013 07:27 PM, Danno Ferrin wrote:
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.
AFAIK, we haven't tested Glass/FX with a Pen
device and I doubt we even
have proper hardware to test it at the moment. So
such a patch would
certainly be welcome. Please feel free to post it on
this mailing list
for
a review.
I think the QA and dev team should invest a few
thousand and buy one or
two
each of a Surface Pro, a Samsung Ativ 500T, and maybe an
Asus VivoTab (but
only the Asus if you can get the pen with it on the same
order). The
"triple threat" input devices (mouse/pen/touch) will
cover a lot of bases.
However, we should first decide how we want to
process Pen events. They
are not regular mouse events, nor are they similar
to regular touch
events
(though they have a lot in common with the latter).
E.g. suppose you can
control your Surface Pro with a finger using its
touch screen. These are
touch events. Now, you could also connect a USB
mouse to this device, and
that would have to generate regular mouse events.
Additionally, you could
connect a graphic tablet such as a Wacom Bamboo for
example, and this
device would have to generate some special Pen
events, right?
As far as I can tell pen evens are just the same
as mouse events unless
you
use microsofts "Ink" APIs to insert "Ink" into your
application. So
unless
JavaFX adds support for digital ink, there is vey little
difference. The
only one that comes to mind is pressure sensitivity, and
the minority of
windows pen screens or pads support pressure
sensitivity.
Should we introduce a new kind of events for Pen
events in FX? Or does it
make sense to use touch events for this purpose? How
would we distinguish
between finger- and pen- based input events in the
above scenario then?
Behavior is a big difference in pen vs touch.
Tap and drag for touch
gets interpreted as a scroll pan, while tap and drag for
a pen
gets interpreted as a mouse click and drag, for example
selecting text.
Pen events don't generate touch gestures like the touch
screens do.
Unless
you count the "flicks" api in microsoft land which just
generates events
at
the windows level for stuff like delete, cut, copy,
paste, etc. Much like
the multimedia keyboard.
A new boolean field could be added isPen could be added
on the mouseEvent,
or a new enum property at InputEvent called Input
Device, that would
enumerate if it was mouse, touch, pen, keyboard, or
whatever standard
input
devies show up in the future. These enums could then be
loaded with all
sorts of interesting queries in case a user wants to
write their app in a
future proof way, such as are drag events principally
pan-scrolling, is
the
gesture device direct/indirect. Maybe not an enum, but
a separate HCI
object rather than pushing the random flags into the
event system.
What other options do we have?
Keeping pen input second class is fine I think,
as long as it is
consistent
with the differences between touch and mouse in non-ink
areas. If we have
to confuse them with one type or the other, confuse them
with mouse events
because they are closer to mouse events then touch
events. There are more
important areas for JavaFX to go to before it goes down
the digital ink
path.
--
best regards,
Anthony