Hi Danno,

I've just pushed your fix:

http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/1dd4bb7090a2

Thank you for the contribution.

--
best regards,
Anthony

On 06/03/2013 06:47 PM, Artem Ananiev wrote:

On 6/3/2013 5:52 PM, Anthony Petrov wrote:
Hi Danno,

Thank you for the patch. I've published a webrev at:

http://cr.openjdk.java.net/~anthony/g-301-penEvents-RT-30869.0/

The fix looks fine to me. Could anyone else please review it?

+1.

Thanks,

Artem

--
best regards,
Anthony

On 06/03/13 04:59, Danno Ferrin wrote:
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




Reply via email to