<Swing Dev> Mouse click cause MOUSE_EXITED and MOUSE_ENTERED event on macOS
dmitry markov
dmitry.markov at oracle.com
Mon Apr 17 19:22:17 UTC 2017
Hi Reto,
I guess, the problem you observed and JDK-8050478
<https://bugs.openjdk.java.net/browse/JDK-8050478> may have the same
root cause. The fix for JDK-8050478
<https://bugs.openjdk.java.net/browse/JDK-8050478> was integrated into
jdk9-b137 and jdk8u152 (not released yet). I recommend that you checked
jdk9-b137 or higher to find out whether the issue is dupe of JDK-8050478
<https://bugs.openjdk.java.net/browse/JDK-8050478> or not.
Regards,
Dmitry
On 12/04/2017 16:16, Reto Merz wrote:
> Hi,
>
> We have found out that a simple mouse click cause a MOUSE_EXITED and MOUSE_ENTERED on macOS in contrary to Windows.
> This happen only when the click is performed on a dialog with a frame (owner) behind it.
> It seems that the frame in the background cause the bug.
>
> Steps to reproduce:
> 1. start reproducer (source below) -> a frame is opened with a button "Open dialog"
> 2. click on "Open dialog" -> a white dialog is opened, this dialog must overlay the frame
> 3. click in the white dialog -> see console output
>
> Note that the reproducer logs mouse events to the console
> (it might be useful to disable line wrapping in macOS terminal with "rput rmam").
>
> On Windows the click cause this events (as expected):
> java.awt.event.MouseEvent[MOUSE_PRESSED,(164,113),absolute(1942,763),button=1,modifiers=Button1,extModifiers=Button1,clickCount=1]
> java.awt.event.MouseEvent[MOUSE_RELEASED,(164,113),absolute(1942,763),button=1,modifiers=Button1,clickCount=1]
> java.awt.event.MouseEvent[MOUSE_CLICKED,(164,113),absolute(1942,763),button=1,modifiers=Button1,clickCount=1]
>
> On macOS (10.12.3) the click also cause MOUSE_EXITED and MOUSE_ENTERED:
> java.awt.event.MouseEvent[MOUSE_PRESSED,(130,134),absolute(820,501),button=1,modifiers=Button1,extModifiers=Button1,clickCount=1]
> java.awt.event.MouseEvent[MOUSE_EXITED,(130,134),absolute(820,501),button=0,modifiers=Button1,extModifiers=Button1,clickCount=0]
> java.awt.event.MouseEvent[MOUSE_ENTERED,(130,134),absolute(820,501),button=0,modifiers=Button1,extModifiers=Button1,clickCount=0]
> java.awt.event.MouseEvent[MOUSE_RELEASED,(130,134),absolute(820,501),button=1,modifiers=Button1,clickCount=1]
> java.awt.event.MouseEvent[MOUSE_CLICKED,(130,134),absolute(820,501),button=1,modifiers=Button1,clickCount=1]
>
> Both tested with the latest public Java 8 release (from java.com):
> java -version
> java version "1.8.0_121"
> Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
> Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
>
> Why we get an additional MOUSE_EXITED and MOUSE_ENTERED on macOS?
> It this a (known) bug or should we report this via bugreport.java.com?
>
> Thanks
> Reto
>
> Reproducer:
>
> import javax.swing.JButton;
> import javax.swing.JDialog;
> import javax.swing.JFrame;
> import javax.swing.JPanel;
> import javax.swing.JTable;
> import javax.swing.WindowConstants;
> import java.awt.BorderLayout;
> import java.awt.EventQueue;
> import java.awt.event.MouseEvent;
>
> public class MouseExited {
> public static void main(String[] args) throws Throwable {
> EventQueue.invokeAndWait(() -> {
> JFrame frame = new JFrame();
> frame.setSize(500, 500);
> frame.setLocationRelativeTo(null);
> frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
>
> JButton button = new JButton("Open dialog");
> button.addActionListener(e -> {
> JTable table = new JTable() {
> @Override
> protected void processMouseEvent(final MouseEvent e) {
> System.out.println(e.toString());
> }
> };
> JPanel dialogPane = new JPanel(new BorderLayout());
> dialogPane.add(table);
> JDialog dialog = new JDialog(frame);
> dialog.setContentPane(dialogPane);
> dialog.setModal(true);
> dialog.setSize(300, 300);
> dialog.setLocationRelativeTo(null);
> dialog.setVisible(true);
> });
>
> JPanel framePane = new JPanel(new BorderLayout());
> framePane.add(button);
> frame.setContentPane(framePane);
> frame.setVisible(true);
> });
> }
> }
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20170417/96e715bc/attachment.html>
More information about the swing-dev
mailing list