Platform: Linux RH 9
Config: Multi-Monitor - Virtual Screen setup using Xinerama
JDK: All releases. Reproducible with Tiger, Mantis
I am showing a frame with a button on the secondary screen in a virtual desktop env. (The bounds of the virtual desktop spans to 2 monitors and windows are draggable across monitors). I am moving the mouse using robot inside monitor1. Button has been set with WAIT cursor. The following behaviors are noticed:
1. Mouse Entered, Mouse Exited and Mouse Moved events are triggerd by button when the button is actually placed in Screen2 and mouse is moved in Screen1.
2. The cursor changes to WAIT cursor when the mouse moves in screen1.
This is incorrect since the component is displayed in screen2 and mouse is moved inside screen1. The actual scenarios is as follows:
For example (not a real data, assuming just for the explanation sake) the width of primary and secondary monitors is 1000. The coords of screen1 is 0, 0, 1000, 768. The coords of secondary screen is 1000, 0, 2000, 768. I am showing the button at 1100, 400 to 1200, 500. I am moving the mouse exactly at the same location in screen1 which is 100,400 to 200, 500. The locations (with respect to each of the monitors) are almost same except the fact that they are on different screens.
I have attached a sample test. Run the sample test on Linux with Xinerama. You would see a frame being displayed on the secondary screen. Click on the button 'WITH THE MOUSE'. Now robot will try to move the mouse cursor in screen1. Watch it carefully. If the cursor changes to WAIT cursor and if you see some mouse events on the console, the bug is reproduced.
This is not reproducible when you click the button through keyboard. So make sure you click the mouse on the button. Make sure there is nothing under the mouse pointer when it is moved by the robot. Any native app below the mouse would prevent this bug from being reproducible. This is not reproducible with Windows_XP with a similar virtual screen setup.
The same issue has been mentioned in one of the other bugs that I filed (5097723) but the developer has requested me to file this issue separately.
Run the testcase. Click the button. Robot will move the mouse and will stop at some point in screen1. Now manually backtrack the same path with the mouse, ie, move the mouse backwards on the same path. You would notice that the mouse would disappear from screen1 and eventually appears on screen2 when you move it to the same location in screen1 where comp is located on screen2.