<AWT Dev> Request for review: 7154048 [macosx] At least drag twice, the toolbar can be dragged to the left side.
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Thu Apr 19 06:55:43 PDT 2012
The first attached file contains the cocoa code snippets that
reproduce the problem.
- At first we create the Main window
- Clicking on the Main window creates the Second window
- The tracking rectangle is set for the Second window during the
window creation
(I also tried to set it in the -viewDidMoveToWindow method)
- When the second window appears under the mouse, the mouse enter
event is not received.
However the Second window tracks the mouse exited/entered events if
we manually move the mouse over the window
The second attached file is a test that shows the problem on the Java
side. It does the same and passes on the Windows and Ubuntu but fails on
the Mac OS X.
Thanks,
Alexandr.
On 4/18/2012 8:22 PM, Leonid Romanov wrote:
> 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/view_bug.do?bug_id=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.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sources.txt
Url: http://mail.openjdk.java.net/pipermail/macosx-port-dev/attachments/20120419/e325d592/sources.txt
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: MouseEnterTest.java
Url: http://mail.openjdk.java.net/pipermail/macosx-port-dev/attachments/20120419/e325d592/MouseEnterTest.java
More information about the macosx-port-dev
mailing list