JDK-6324985 : XAWT: extra MouseEntered event when dragging mouse through component border
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 6
  • Priority: P3
  • Status: Closed
  • Resolution: Cannot Reproduce
  • OS: generic,linux
  • CPU: generic
  • Submitted: 2005-09-16
  • Updated: 2011-01-19
  • Resolved: 2005-09-16
Related Reports
Duplicate :  
Relates :  
Description
Run the test on linux/solaris with XAWT.
Press LeftMouseButton on some component and drag it out of the comp. You would see extra MouseEntered event.
This is a regression introduced in JDK6.0b47. 
JDK6.0b46 works okay.

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;

public class Test {
    public static void main(String s[]) {
        Frame f = new Frame();
	f.setLayout(new FlowLayout());
        Button jb = new Button("a button");
	Label l = new Label("LABEL");
        f.add(jb);
        f.add(l);

        jb.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                System.out.println("PRESSED");
            }
            public void mouseEntered(MouseEvent e) {
                System.out.println("ENTERED");
            }
            public void mouseExited(MouseEvent e) {
                System.out.println("EXITED");
            }
            public void mouseReleased(MouseEvent e) {
                System.out.println("RELEASED");
            }
            public void mouseClicked(MouseEvent e) {
                System.out.println("CLICKED");
            }

        });
        l.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                System.out.println("PRESSED");
            }
            public void mouseEntered(MouseEvent e) {
                System.out.println("ENTERED");
            }
            public void mouseExited(MouseEvent e) {
                System.out.println("EXITED");
            }

        });

        f.setSize(400, 300);
        f.setVisible(true);
    }
}