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.

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

Commit messages:
 - 8242419: JFXPanel: MouseEvent always reports that Primary button changed 
state if held
 - 8242419: JFXPanel: MouseEvent always reports that Primary button changed 
state if held

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

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

Reply via email to