[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Fixing TouchEvents on modern Windows
From:       Michael Hoffer <info () michaelhoffer ! de>
Date:       2022-10-22 16:10:45
Message-ID: CAMWeGnHyJ1CyXodwgj6=3Df=dr5MwEEkbceLuyh7fCHMxJ74Pg () mail ! gmail ! com
[Download RAW message or body]

Hi all,

it's been a while since I was active on this mailing list. Sorry for the
long silence. I am still working with JavaFX and generally very happy.

However, a couple of days ago I noticed that direct touch support on
Windows is broken on a surprisingly large number of devices since JavaFX
16. I tracked the problem down to a relatively naive attempt at
distinguishing *direct* touch events (finger based touch) from *indirect*
stylus/pen based touch events (which are basically just mouse events) which
was introduced as part of fixing https://bugs.openjdk.org/browse/JDK-8249737
.

The problem is that on a large number of touch devices without a pen, touch
events are always reported as indirect. Examples are iiyama touch monitors
(capacitive, multitouch) for Windows PCs .Those devices and even most
Surface devices since the Surface Pro 3 (verified with Surface Pro 4, 7 and
Studio) fall under that category.

The unfortunate result is that only gesture based multitouch works as
expected. I created a PR on GitHub that fixes the issue by introducing a
boolean property to the Scene class. The proposed interface can be seen
here:
https://github.com/openjdk/jfx/pull/927/commits/0caf15712a7e2e4492e6c2b5bb13417a514e41a5

I tried to explain the reasons for this API proposal here:
https://github.com/openjdk/jfx/pull/927

I fully understand that such a change cannot be introduced without prior
discussion. But since it's very urgent for our company to get this fixed, I
created the PR anyway. Just as a public draft. And we are documenting
the changes that we introduced in our JFX build. In the meantime, our
company will roll out a custom JFX build with the proposed API.

What are your thoughts? Do you agree with the proposed API? Would you
prefer a different solution?

Regards,
Michael






--





         <https://twitter.com/mihosoft>




Dr. Michael Hoffer

Website:  www.mihosoft.eu

Email:      info@michaelhoffer.de



[image: social-icon-twitter] <https://twitter.com/mihosoft>

[image: social-icon-linkedin] <https://www.linkedin.com/in/mihosoft/>

[image: social-icon-github] <https://github.com/miho>

[Attachment #3 (text/html)]

<div dir="ltr"><div>Hi all,</div><div><br></div><div>it&#39;s been a while since I \
was active on this mailing list. Sorry  for the long silence. I am still working with \
JavaFX and generally very happy.</div><div><br></div><div>However, a couple of days \
ago I noticed that direct touch support on Windows is broken on a surprisingly large \
number of devices since  JavaFX 16. I tracked the problem down to a relatively naive \
attempt at distinguishing *direct* touch events (finger based touch) from *indirect* \
stylus/pen based touch events (which are basically just mouse events) which was \
introduced as part of fixing <a \
href="https://bugs.openjdk.org/browse/JDK-8249737">https://bugs.openjdk.org/browse/JDK-8249737</a>.</div><div><br></div><div>The \
problem is that on a large  number of touch devices without a pen, touch events are \
always reported as indirect. Examples are  iiyama touch monitors (capacitive, \
multitouch) for Windows PCs  .Those devices and even most Surface devices since the \
Surface Pro 3 (verified with Surface Pro 4, 7 and Studio) fall under that \
category.</div><div><br></div><div>The unfortunate result is that only gesture based \
multitouch works as expected. I created a PR on GitHub that fixes the issue by \
introducing a boolean property to the Scene class. The proposed interface can be seen \
here:  <a href="https://github.com/openjdk/jfx/pull/927/commits/0caf15712a7e2e4492e6c2 \
b5bb13417a514e41a5">https://github.com/openjdk/jfx/pull/927/commits/0caf15712a7e2e4492e6c2b5bb13417a514e41a5</a></div><div><br></div><div>I \
tried to explain the reasons for this API proposal here:  <a \
href="https://github.com/openjdk/jfx/pull/927">https://github.com/openjdk/jfx/pull/927</a></div><div><br></div><div>I \
fully understand that such a change cannot be introduced without prior discussion. \
But since it&#39;s very urgent for our  company to get this fixed, I created the PR \
anyway. Just as a public draft. And we are documenting the  changes that we \
introduced in our JFX build. In the meantime, our company will roll out a custom JFX \
build with the proposed API.</div><div><br></div><div>What are your thoughts? Do you \
agree with the proposed API? Would you prefer a different \
solution?</div><div><br></div><div>Regards,</div><div>Michael</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><div \
dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div \
dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div \
dir="ltr"><div dir="ltr"><div dir="ltr"><div>--</div><div><br></div><div><table \
cellpadding="0" cellspacing="0" width="550"><tbody><tr \
style="color:rgb(0,0,0);font-family:Times;font-size:medium"><td valign="top"><table \
cellpadding="0" cellspacing="0"><tbody><tr><td><br><br><br><br></td></tr><tr><td><table \
cellpadding="0" cellspacing="0" style="font-size:0px"><tbody><tr><td \
align="center"><p style="margin:0px;border-radius:3px;background-color:rgb(64,158,255)"> \
<a href="https://twitter.com/mihosoft" style="display:inline-block;border-radius:3px" \
target="_blank"></a></p></td><td width="2"><br></td><td align="center"><br></td><td \
width="2"><br></td><td \
align="center"><br></td></tr></tbody></table></td></tr></tbody></table></td><td \
valign="top" width="100%"><table cellpadding="0" cellspacing="0"><tbody><tr \
style="font-weight:600"><td valign="top" style="font-size:0px"><p \
style="font-size:14px;font-family:Arial,Helvetica,sans-serif;margin:0px;line-height:21px"><span \
style="color:rgb(64,158,255)">Dr. Michael Hoffer</span></p></td></tr><tr><td \
valign="top" style="font-size:0px;padding-bottom:5px"><p \
style="font-size:12px;font-family:Arial,Helvetica,sans-serif;margin:0px;line-height:18px"></p></td></tr><tr><td \
valign="top" style="font-size:0px;border-top:1px solid \
rgb(221,221,221);padding-top:5px"><p \
style="font-size:12px;font-family:Arial,Helvetica,sans-serif;margin:0px;line-height:18px"><span \
style="padding-right:0px;font-weight:600;color:rgb(64,158,255)">Website:    </span><a \
href="http://www.mihosoft.eu" \
target="_blank">www.mihosoft.eu</a></p></td></tr><tr><td valign="top" \
style="font-size:0px"><p \
style="font-size:12px;font-family:Arial,Helvetica,sans-serif;margin:0px;line-height:18px"><span \
style="padding-right:0px;font-weight:600;color:rgb(64,158,255)">Email:          \
</span><a href="mailto:http://info@michaelhoffer.de" \
target="_blank">info@michaelhoffer.de</a></p></td></tr><tr><td valign="top" \
style="font-size:0px"></td></tr></tbody></table>                      <table \
cellpadding="0" cellspacing="0" width="550" \
style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small"><tbody><tr \
style="color:rgb(0,0,0);font-family:Times;font-size:medium"><td valign="top"><table \
cellpadding="0" cellspacing="0"><tbody><tr><td><table cellpadding="0" cellspacing="0" \
style="font-size:0px"><tbody><tr><td align="center"><p \
style="margin:0px;border-radius:3px;background-color:rgb(64,158,255)"><a \
href="https://twitter.com/mihosoft" style="display:inline-block;border-radius:3px" \
target="_blank"><br><img width="20" height="20" \
src="https://s3.eu-central-1.amazonaws.com/mysigmail/icons/new/twitter.png" \
alt="social-icon-twitter" \
style="display:table-cell;vertical-align:middle;border-radius:3px"></a></p></td><td \
width="2"></td><td align="center"><p \
style="margin:0px;border-radius:3px;background-color:rgb(64,158,255)"><a \
href="https://www.linkedin.com/in/mihosoft/" \
style="display:inline-block;border-radius:3px" target="_blank"><img width="20" \
height="20" src="https://s3.eu-central-1.amazonaws.com/mysigmail/icons/new/linkedin.png" \
alt="social-icon-linkedin" \
style="display:table-cell;vertical-align:middle;border-radius:3px"></a></p></td><td \
width="2"></td><td align="center"><p \
style="margin:0px;border-radius:3px;background-color:rgb(64,158,255)"><a \
href="https://github.com/miho" style="display:inline-block;border-radius:3px" \
target="_blank"><img width="20" height="20" \
src="https://s3.eu-central-1.amazonaws.com/mysigmail/icons/new/github.png" \
alt="social-icon-github" \
style="display:table-cell;vertical-align:middle;border-radius:3px"></a></p><div><br></ \
div></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr \
style="color:rgb(0,0,0);font-family:Times;font-size:medium"><td colspan="2" \
style="padding-top:10px"><table cellspacing="0" cellpadding="0" border="0" \
style="font-size:0px"><tbody><tr><td valign="top" style="border-top:1px solid \
rgb(221,221,221);padding-top:5px"></td></tr></tbody></table></td></tr></tbody></table> \
</div><div><br></div></div></div></div></div></div></div></div></div></div></div></div></div>




[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic