Hi Manajit,

The usage of addChildWindow will introduce some undesirable behaviour. For 
example, parent and child windows are created on the same screen; on the build 
with your fix if the parent window is moved the child will be moved too. It is 
better to not use addChildWindow without a good reasons.

Will your fix work if the parent with popup menu and the child are created on 
different screens?

Thanks,
Dmitry

> On 31 Oct 2018, at 16:41, Manajit Halder <manajit.hal...@oracle.com> wrote:
> 
> Changed the targeted review version to 12.
> 
> Regards,
> Manajit
> On 31/10/18 10:09 PM, Manajit Halder wrote:
>> Hi Dmitry/Sergey,
>> 
>> I have a different fix for this issue in Mac OS specific code. In this 
>> proposed fix I am trying to fix the window addition/ordering with respect to 
>> the screen on which the window is created. As per my debugging this issue 
>> was introduced while fixing JDK-8080729. The problem was introduced due to 
>> the use of orderWindow by replacing it with addChildWindow. The difference 
>> between these two Mac OS methods:
>> 
>> addChildWindow: After the childWin is added as a child of the window, it is 
>> maintained in relative position indicated by place for subsequent ordering 
>> operations involving either window. While this attachment is active, moving 
>> childWin will not cause the window to move (as in sliding a drawer in or 
>> out), but moving the window will cause childWin to move.
>> https://developer.apple.com/documentation/appkit/nswindow/1419152-addchildwindow?language=objc
>>  
>> <https://developer.apple.com/documentation/appkit/nswindow/1419152-addchildwindow?language=objc>
>> orderWindow: Repositions the window’s window device in the window server’s 
>> screen list.
>> https://developer.apple.com/documentation/appkit/nswindow/1419672-orderwindow?language=occ
>>  
>> <https://developer.apple.com/documentation/appkit/nswindow/1419672-orderwindow?language=occ>
>> The main difference which was causing this issue is: addChildWindow attaches 
>> the child window to its parent, but orderWindow re positions it. 
>> 
>> Proposed fix:
>>     In my proposed fix I am trying to add/order the window based on which 
>> screen it is created. If the windows (parent and child) are created on same 
>> screen then addChildWindow is used to order child window on top of parent 
>> window. And orderWindow is used for the other case when windows are created 
>> on different screens.
>> 
>> Please review the fix:
>> http://cr.openjdk.java.net/~mhalder/8189253/webrev.01/ 
>> <http://cr.openjdk.java.net/%7Emhalder/8189253/webrev.01/>
>> Regards,
>> Manajit
>> On 03/05/18 12:06 AM, Dmitry Markov wrote:
>>> Hi Manajit,
>>> 
>>> If I got it right, the problem is OSX specific and you suggest fixing it in 
>>> common code. I am sorry but that does not look like as a good approach 
>>> unless it has reasonable explanation.
>>> I recommend that you should move the fix to more suitable place, (i.e. OSX 
>>> specific code). For example, LWWindowPeer.notifyMouseEvent() where we 
>>> receive mouse events from the platform and generate ours mouse enter/exit 
>>> events if necessary. I guess it is possible to implement something similar 
>>> to your current fix in LWWindowPeer.
>>> 
>>> Thanks,
>>> Dmitry 
>>> 
>>>> On 28 Apr 2018, at 00:54, Sergey Bylokhov <sergey.bylok...@oracle.com> 
>>>> <mailto:sergey.bylok...@oracle.com> wrote:
>>>> 
>>>> Hi, Manajit.
>>>> Please clarify why this bug is occurred after JDK-8080729, how=20
>>>> orderWindow/addChildWindow are related to the mouse events which we get?=20
>>>> Did we start to get more event or less events or we get events in the=20
>>>> different order, what is the difference?
>>>> 
>>>> On 04/01/2018 10:22, Manajit Halder wrote:
>>>>> Hi Semyon,
>>>>> =20
>>>>> Fix for issue JDK-8080729=20
>>>>> <https://bugs.openjdk.java.net/browse/JDK-8080729> 
>>>>> <https://bugs.openjdk.java.net/browse/JDK-8080729> has caused this=20
>>>>> regression due to changes in method setVisible(boolean visible) in file=
>>>> =20
>>>>> CPlatformWindow.java
>>>>> orderWindow is causing the issue here, if we revert to addChildWindow=20
>>>>> then the issue is not observed but then the fix for issue JDK-8080729 f=
>>>> ails.
>>>>> Before this change the child window used to be added on to the parent a=
>>>> s=20
>>>>> shown below in the commented code. But after the change child window is=
>>>> =20
>>>>> ordered above the parent.
>>>>> =20
>>>>> Below code causes the regression:
>>>>> =20
>>>>> *CWrapper.NSWindow.orderWindow(ptr, CWrapper.NSWindow.NSWindowAbove,=20
>>>>> ownerPtr);*
>>>>> *//CWrapper.NSWindow.addChildWindow(ownerPtr, ptr,=20
>>>>> CWrapper.NSWindow.NSWindowAbove);*
>>>>> =20
>>>>> Debugging further I found that if we use orderWindow then the new windo=
>>>> w=20
>>>>> is considered as new graphics device in the method notifyReshape in=20
>>>>> LWWindowPeer.java (the method updateGraphicsDevice() returns true) and=20
>>>>> is the difference between using orderWindow and addChildWindow.
>>>>> =20
>>>>> Since the option to add child window is between choosing oderWindow and=
>>>> =20
>>>>> addChildWindow we don=E2=80=99t have any option to do the fix in the Ma=
>>>> c OS=20
>>>>> native code.
>>>>> =20
>>>>> Regards,
>>>>> Manajit
>>>>> =20
>>>>> =20
>>>>>> On 02-Jan-2018, at 11:30 PM, Semyon Sadetsky=20
>>>>>> <semyon.sadet...@oracle.com <mailto:semyon.sadet...@oracle.com> 
>>>>>> <mailto:semyon.sadet...@oracle.com> <mailto:semyon.sadet...@oracle.com>> 
>>>>>> wrote=
>>>> :
>>>>>> Hi Manajit,
>>>>>> 
>>>>>> JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac=20
>>>>>> OS code only. Nevertheless you are suggesting to fix the regression in=
>>>> =20
>>>>>> generic code. This need to be explained somehow.
>>>>>> 
>>>>>> --Semyon
>>>>>> 
>>>>>> On 12/25/2017 02:42 AM, Manajit Halder wrote:
>>>>>>> Hi Semyon,
>>>>>>> 
>>>>>>> Regression is cause by JDK-8080729=20
>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8080729> 
>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8080729>. The fix can=E2=80=
>>>> =99t be=20
>>>>>>> reversed since it is the=C2=A0choice between addChildWindow or=20
>>>>>>> orderWindow. Went through code flow related to the issue but=C2=A0did=
>>>> n=E2=80=99t=20
>>>>>>> find any other better place in code to handle this issue. The best=20
>>>>>>> way to fix the issue would be to avoid retargeting of events=20
>>>>>>> (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on=
>>>> =20
>>>>>>> the parent window (when the mouse is actually on the child window).=20
>>>>>>> Therefore request you to review the webrev.00.
>>>>>>> 
>>>>>>> Regards,
>>>>>>> Manajit
>>>>>>> 
>>>>>>>> On 08-Dec-2017, at 9:55 PM, semyon.sadet...@oracle.com=20 
>>>>>>>> <mailto:semyon.sadet...@oracle.com=20>
>>>>>>>> <mailto:semyon.sadet...@oracle.com> 
>>>>>>>> <mailto:semyon.sadet...@oracle.com> wrote:
>>>>>>>> 
>>>>>>>> Hi Manajit,
>>>>>>>> 
>>>>>>>> Can you provide information which fix caused the regression?
>>>>>>>> 
>>>>>>>> --Semyon
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 12/8/17 5:53 AM, Manajit Halder wrote:
>>>>>>>>> Hi All,
>>>>>>>>> 
>>>>>>>>> Kindly review the following Swing fix.
>>>>>>>>> 
>>>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8189253 
>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8189253>
>>>>>>>>> Webrev: http://cr.openjdk.java.net/~mhalder/8189253/webrev.00/=20 
>>>>>>>>> <http://cr.openjdk.java.net/%7Emhalder/8189253/webrev.00/=20>
>>>>>>>>> <http://cr.openjdk.java.net/%7Emhalder/8189253/webrev.00/> 
>>>>>>>>> <http://cr.openjdk.java.net/%7Emhalder/8189253/webrev.00/>
>>>>>>>>> 
>>>>>>>>> Cause:
>>>>>>>>> Issue was due to retargeting of mouse enter exit events.
>>>>>>>>> MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window=20
>>>>>>>>> (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the=20
>>>>>>>>> modeless JDialog.
>>>>>>>>> 
>>>>>>>>> Fix:
>>>>>>>>> Retargeting of events is not done in-between MOUSE_PRESS and=20
>>>>>>>>> MOUSE_RELEASE.
>>>>>>>>> 
>>>>>>>>> Regards,
>>>>>>>>> Manajit
>>>>>>>>> 
>>>>> =20
>>>> --=20
>>>> Best regards, Sergey.
>> 
> 

Reply via email to