JDK-8044649 : [macosx] TrayIcon does not handle mouseMoved event
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 9
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: os_x
  • Submitted: 2014-06-03
  • Updated: 2014-06-03
  • Resolved: 2014-06-03
Related Reports
Duplicate :  
Relates :  
Description
Need to evaluate whether it is a bug or OS specific behavior.

OS X. Created java.awt.TrayIcon does not handle mouseMoved event if the corresponding listener is added to it.
It could be not a bug, like JDK-6827035 on Windows

To reproduce run the following test:

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;

public class OSXMouseMovedTest {
    static boolean moved;

    public static void main(String[] args) throws Exception {
        moved = false;

        TrayIcon icon = new TrayIcon(new BufferedImage(20, 20, BufferedImage.TYPE_3BYTE_BGR), "Test icon");
        icon.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseMoved(MouseEvent event) {
                moved = true;
                System.out.println("Mouse moved");
            }
        });
        SystemTray.getSystemTray().add(icon);

        Robot robot = new Robot();
        robot.mouseMove(0, 13);
        double width = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        for (double i = width / 2; i <= width; i++){
            robot.mouseMove((int) i, 13);
            robot.delay(7);
        }

        if (!moved)
            throw new RuntimeException("Mouse moved action did not trigger");
    }
}