On Thu, 6 Jul 2023 03:21:19 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 
wrote:

>> If an EventHandler or EventFilter for a mouse button is attached to a scene 
>> within a JFXPanel and the **primary mouse button** is held, any mouse button 
>> click will create an event such that event.getButton().name() wrongly 
>> returns PRIMARY, even if the secondary or middle button was clicked. 
>> This is because `SwingEvents.mouseButtonToEmbedMouseButton()` overwrites the 
>> button name after checking the modifier value. 
>> For mouse click with primary button  `mouseButtonToEmbedMouseButton` is 
>> first called with `BUTTON1 `and modifier `BUTTON1_DOWN_MASK `(ie 1024) and 
>> then when secondary button(ie right button is clicked) 
>> `mouseButtonToEmbedMouseButton` is called with `BUTTON3 `and modifier 
>> `BUTTON3_DOWN_MASK | BUTTON1_DOWN_MASK` (ie 5120) 
>> and when secondary button is released, `mouseButtonToEmbedMouseButton` is 
>> again called with `BUTTON3 `but with modifier `BUTTON1_DOWN_MASK `(1024) 
>> resulting in button being declared PRIMARY.
>> 
>> Fix is to make sure not to overwrite button name if a button name is already 
>> assigned.
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Fix comment

modified the code test thusly:


        scene.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> 
System.out.println("Button clicked: " + event.getButton().name()));
        scene.addEventHandler(MouseEvent.MOUSE_PRESSED, event -> 
System.out.println("Button pressed: " + event.getButton().name()));
        scene.addEventHandler(MouseEvent.MOUSE_RELEASED, event -> 
System.out.println("Button released: " + event.getButton().name()));



tested with  the fix (works as expected) and without the fix (fails as 
expected).

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

Marked as reviewed by angorya (Reviewer).

PR Review: https://git.openjdk.org/jfx/pull/1170#pullrequestreview-1519316404

Reply via email to