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

List:       openjdk-openjfx-dev
Subject:    Withdrawn: 8262023: Scrolled button is pressed using Monocle on Raspberry Pi with Touchscreen
From:       duke <duke () openjdk ! org>
Date:       2023-04-29 2:47:56
Message-ID: g3LYp0G7pA_bTxO-gnOHg37TIvKlmiXxqMjUsuH77fY=.3d5a5a19-227a-4c95-a1c2-68bae4ea24d1 () github ! com
[Download RAW message or body]

On Fri, 19 Feb 2021 14:19:35 GMT, Alexander Scherbatiy <alexsch@openjdk.org> wrote:

> The issue is reproduced on Raspberry Pi 3 B+ with Touchscreen display.
> 
> To reproduce the issue run the \
> [ScrollPaneSample](https://bugs.openjdk.java.net/secure/attachment/93270/ScrollPaneSample.java) \
> with Monocle:
> > sudo jdk/bin/java -Dprism.verbose=true -Djavafx.platform=monocle \
> > -Dembedded=monocle -Dglass.platform=Monocle ScrollPaneSample
> 
> 
> An application consists of a ScrollPane with buttons. if a button is touched by a \
> finger, moved up/down and released, the button is scrolled and the button's action \
> is fired. 
> This happens because Monocle generates mouse pressed, mouse dragged, scroll, mouse \
> released events when touch events are received. Even a  button is scrolled on a \
> ScrollPane it still fires the button's action on the synthesized mouse release \
> event. 
> My first attempt was to add a scroll event listener to a ButtonBehavior class and \
> disarm the button when the scroll event is received. This does work not in the case \
> where buttons are small and scrolling buttons leads that a finger is released on \
> the next button (the scrolling process is remained a slightly behind the touched \
> finger so the finger is touched on one button and released on another). In this \
> case all scroll events goes to the first button and the second button still fires \
> its action (it does not disarmed because it does not receive scroll events). 
> The current fix adds drag event listener to ButtonBehavior to disarm the button. \
> Drag events goes to the touched and released buttons. 
> Than I checked the fix on the same Raspberry Pi using GTK  with touchscreen.
> > sudo jdk/bin/java -Dprism.verbose=true -Djavafx.platform=gtk ScrollPaneSample
> 
> I have not seen scroll events using GTK (even using \
> -Dgtk.com.sun.javafx.gestures.scroll=true option), but GTK sends mouse drag events \
> on a button touch. The mouse drag event between a button touch and release events \
> would disarm the button in the proposed ButtonBehavior drag event handler. So I \
> added the check if the mouse drag is synthesized. If the mouse drag is synthesized \
> (Monocle case on touchscreen) it disarms the button, otherwise (GTK case) not. 
> I checked the fix for the following controls placed on a ScrollPane (see \
> [ScrollPaneControlsSample](https://bugs.openjdk.java.net/secure/attachment/93271/ScrollPaneControlsSample.java) \
>                 sample) :
> - Fixed in corresponding behavior classes or its parents: Button, ToggleButton, \
>                 CheckBox, ComboBox, ChoiceBox, ColorPicker, DatePicker, RadioButton \
>                 
> - Works because an action is not fired on mouse release event: TextField 
> - Does not work: Slider
> 
> The Slider control does not work with the fix because it reacts not only on mouse \
> release event but on mouse drag event as well. It requires a separate fix. 
> I checked the Ensemble8 sample with the fix. It works with Monocle on Raspberry Pi \
> 3B+ on Touchscreen. Scrolling the main page by a finger does not makes it to be \
> pressed. 
> The Ensemble8 sample does not work with GTK on Raspberry Pi 3B+ with Touchscreen. I \
> see it generates scroll events ( it has its own \
> [ScrollEventSynthesizer](https://github.com/openjdk/jfx/blob/master/apps/samples/Ensemble8/src/app/java/ensemble/ScrollEventSynthesizer.java)) \
> and action events and it can makes the Ensemble8 buttons on a ScrollPane to be \
> pressed.

This pull request has been closed without being integrated.

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

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


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

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