Request for review: 7154048 [macosx] At least drag twice, the toolbar can be dragged to the left side. (original) (raw)
Leonid Romanov leonid.romanov at oracle.com
Wed Apr 18 09:22:58 PDT 2012
- Previous message: Request for review: 7154048 [macosx] At least drag twice, the toolbar can be dragged to the left side.
- Next message: Request for review: 7154048 [macosx] At least drag twice, the toolbar can be dragged to the left side.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi, A quick question to help me better understand what is going on in your webrev. The common way to track mouse enter/exit events in OS X is to use NSView's tracking rectangle or (newer than tracking rectangle) NSTrackingArea class. In our port, we set a tracking rectangle in -viewDidMoveToWindow method of AWTView class. So, my question is: have you investigated what is wrong with our current approach? That is, why it doesn't work and for what cases?
Thanks, Leonid.
On 18.04.2012, at 19:40, Alexander Scherbatiy wrote:
Please review a fix for CR 7154048. http://bugs.sun.com/bugdatabase/viewbug.do?bugid=7154048 webrev: http://cr.openjdk.java.net/~alexsch/7154048/webrev.00/ Let's see the following test case: - Frame contains two components JLabel and JButton - The JLabel component has a mouse listener mousePressed: create a Window under the mouse click mouseDragged: drag the created window mouseReleased: close the Window - A user clicks on the JLabel component, drags the mouse to the JButton component and releases the mouse button The current JDK 8 implementation shows the following events on Mac OS X: -------------------------------------------------------- mouse pressed: javax.swing.JLabel mouse exited: javax.swing.JLabel mouse entered: javax.swing.JLabel mouse dragged: javax.swing.JLabel mouse exited: javax.swing.JLabel mouse entered: javax.swing.JButton mouse dragged: javax.swing.JLabel mouse exited: javax.swing.JButton mouse entered: Drag Window mouse exited: Drag Window mouse entered: javax.swing.JButton mouse released: javax.swing.JButton -------------------------------------------------------- There are several issues: 1) The window does not receive the mouse entered event when it is created under the mouse 2) There are JLabel exited/JButton entered events during the window dragging 3) JLabel does not receive the mouse released event The fix synthesizes the mouse entered/exited events manually if they are not received. The entered/exited events synthesizing is added to setFrame, toFront, toBack, and zoom methods of the AWTWindow and CWrapper classes. There is an option to add the events synthesizing to the windowDidResize notification. However this notification is sent when a window size is changed in both cases, programmatically and when user is resized the window. So in a lot of case there is no need for the our use case events generation. The LWWindowPeer class is updated to not generate extra mouse enter/exit events during the mouse dragging. Tho automated tests are added. Thanks, Alexandr.
- Previous message: Request for review: 7154048 [macosx] At least drag twice, the toolbar can be dragged to the left side.
- Next message: Request for review: 7154048 [macosx] At least drag twice, the toolbar can be dragged to the left side.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]