This PR fixes a bug 
([JDK-8289115](https://bugs.openjdk.org/browse/JDK-8289115)) that was 
introduced with #394, which changed the following line in the 
`NotifyTouchInput` function (ViewContainer.cpp):

- const bool isDirect = true;
+ const bool isDirect = IsTouchEvent();


`IsTouchEvent` is a small utility function that uses the Windows SDK function 
`GetMessageExtraInfo` to distinguish between mouse events and pen events as 
described in this article: 
https://learn.microsoft.com/en-us/windows/win32/tablet/system-events-and-mouse-messages

I think that using this function to distinguish between touchscreen events and 
pen events is erroneous. The linked article states:
_"When your application receives a **mouse message** (such as WM_LBUTTONDOWN) 
[...]"_

But we are not receiving a mouse message in `NotifyTouchInput`, we are 
receiving a `WM_TOUCH` message.
I couldn't find any information on whether this API usage is also supported for 
`WM_TOUCH` messages, but my testing shows that that's probably not the case (I 
tested this with a XPS 15 touchscreen laptop, where `GetMessageExtraInfo` 
returns 0 for `WM_TOUCH` messages).

My suggestion is to check the `TOUCHEVENTF_PEN` flag of the `TOUCHINPUT` 
structure instead:

const bool isDirect = (ti->dwFlags & TOUCHEVENTF_PEN) == 0;

-------------

Commit messages:
 - Fixed stylus detection

Changes: https://git.openjdk.org/jfx/pull/1459/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1459&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8289115
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jfx/pull/1459.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1459/head:pull/1459

PR: https://git.openjdk.org/jfx/pull/1459

Reply via email to