<Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

<Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Manajit Halder
Hi All,

Kindly review the following Swing fix.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit

Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Semyon Sadetsky

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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit


Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Manajit Halder
Hi Semyon,

Regression is cause by JDK-8080729. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit



Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Semyon Sadetsky

Hi Manajit,

JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac OS code only. Nevertheless you are suggesting to fix the regression in 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. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit




Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Manajit Halder
Hi Semyon,

Fix for issue JDK-8080729 has caused this regression due to changes in method setVisible(boolean visible) in file CPlatformWindow.java
orderWindow is causing the issue here, if we revert to addChildWindow then the issue is not observed but then the fix for issue JDK-8080729 fails.
Before this change the child window used to be added on to the parent as shown below in the commented code. But after the change child window is ordered above the parent.

Below code causes the regression:

CWrapper.NSWindow.orderWindow(ptr, CWrapper.NSWindow.NSWindowAbove, ownerPtr);
//CWrapper.NSWindow.addChildWindow(ownerPtr, ptr, CWrapper.NSWindow.NSWindowAbove);

Debugging further I found that if we use orderWindow then the new window is considered as new graphics device in the method notifyReshape in LWWindowPeer.java (the method updateGraphicsDevice() returns true) and is the difference between using orderWindow and addChildWindow.

Since the option to add child window is between choosing oderWindow and addChildWindow we don’t have any option to do the fix in the Mac OS native code.

Regards,
Manajit


On 02-Jan-2018, at 11:30 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac OS code only. Nevertheless you are suggesting to fix the regression in 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. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit





Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Semyon Sadetsky

Hi Manajit,

I could reproduce similar behaviour on Linux when mouse is dragged to another component with the left button pressed and then the right button is immediately  pressed. The popup is triggered by the same logic despite it isn't configured for the component.

--Semyon

On 01/04/2018 10:22 AM, Manajit Halder wrote:
Hi Semyon,

Fix for issue JDK-8080729 has caused this regression due to changes in method setVisible(boolean visible) in file CPlatformWindow.java
orderWindow is causing the issue here, if we revert to addChildWindow then the issue is not observed but then the fix for issue JDK-8080729 fails.
Before this change the child window used to be added on to the parent as shown below in the commented code. But after the change child window is ordered above the parent.

Below code causes the regression:

CWrapper.NSWindow.orderWindow(ptr, CWrapper.NSWindow.NSWindowAbove, ownerPtr);
//CWrapper.NSWindow.addChildWindow(ownerPtr, ptr, CWrapper.NSWindow.NSWindowAbove);

Debugging further I found that if we use orderWindow then the new window is considered as new graphics device in the method notifyReshape in LWWindowPeer.java (the method updateGraphicsDevice() returns true) and is the difference between using orderWindow and addChildWindow.

Since the option to add child window is between choosing oderWindow and addChildWindow we don’t have any option to do the fix in the Mac OS native code.

Regards,
Manajit


On 02-Jan-2018, at 11:30 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac OS code only. Nevertheless you are suggesting to fix the regression in 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. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit






Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Manajit Halder
Hi Semyon,

I could not reproduce the behaviour on Mac as on Mac this operation is not possible and hence it won’t be a problem on Mac. It is not possible to press the right button or the left button when the other button is already pressed using both Mouse provided by Apple and Track pad. Once the left button is pressed it need to be release to press the right button and vice versa. 

Thanks,
Manajit

On 05-Jan-2018, at 7:08 AM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

I could reproduce similar behaviour on Linux when mouse is dragged to another component with the left button pressed and then the right button is immediately  pressed. The popup is triggered by the same logic despite it isn't configured for the component.

--Semyon

On 01/04/2018 10:22 AM, Manajit Halder wrote:
Hi Semyon,

Fix for issue JDK-8080729 has caused this regression due to changes in method setVisible(boolean visible) in file CPlatformWindow.java
orderWindow is causing the issue here, if we revert to addChildWindow then the issue is not observed but then the fix for issue JDK-8080729 fails.
Before this change the child window used to be added on to the parent as shown below in the commented code. But after the change child window is ordered above the parent.

Below code causes the regression:

CWrapper.NSWindow.orderWindow(ptr, CWrapper.NSWindow.NSWindowAbove, ownerPtr);
//CWrapper.NSWindow.addChildWindow(ownerPtr, ptr, CWrapper.NSWindow.NSWindowAbove);

Debugging further I found that if we use orderWindow then the new window is considered as new graphics device in the method notifyReshape in LWWindowPeer.java (the method updateGraphicsDevice() returns true) and is the difference between using orderWindow and addChildWindow.

Since the option to add child window is between choosing oderWindow and addChildWindow we don’t have any option to do the fix in the Mac OS native code.

Regards,
Manajit


On 02-Jan-2018, at 11:30 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac OS code only. Nevertheless you are suggesting to fix the regression in 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. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit







Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Semyon Sadetsky

Hi Manajit,

Still didn't get why are you limited to Mac platform  only while you change updates generic code. Why mouse provided by Apple matters here?

--Semyon


On 01/08/2018 01:40 AM, Manajit Halder wrote:
Hi Semyon,

I could not reproduce the behaviour on Mac as on Mac this operation is not possible and hence it won’t be a problem on Mac. It is not possible to press the right button or the left button when the other button is already pressed using both Mouse provided by Apple and Track pad. Once the left button is pressed it need to be release to press the right button and vice versa. 

Thanks,
Manajit

On 05-Jan-2018, at 7:08 AM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

I could reproduce similar behaviour on Linux when mouse is dragged to another component with the left button pressed and then the right button is immediately  pressed. The popup is triggered by the same logic despite it isn't configured for the component.

--Semyon

On 01/04/2018 10:22 AM, Manajit Halder wrote:
Hi Semyon,

Fix for issue JDK-8080729 has caused this regression due to changes in method setVisible(boolean visible) in file CPlatformWindow.java
orderWindow is causing the issue here, if we revert to addChildWindow then the issue is not observed but then the fix for issue JDK-8080729 fails.
Before this change the child window used to be added on to the parent as shown below in the commented code. But after the change child window is ordered above the parent.

Below code causes the regression:

CWrapper.NSWindow.orderWindow(ptr, CWrapper.NSWindow.NSWindowAbove, ownerPtr);
//CWrapper.NSWindow.addChildWindow(ownerPtr, ptr, CWrapper.NSWindow.NSWindowAbove);

Debugging further I found that if we use orderWindow then the new window is considered as new graphics device in the method notifyReshape in LWWindowPeer.java (the method updateGraphicsDevice() returns true) and is the difference between using orderWindow and addChildWindow.

Since the option to add child window is between choosing oderWindow and addChildWindow we don’t have any option to do the fix in the Mac OS native code.

Regards,
Manajit


On 02-Jan-2018, at 11:30 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac OS code only. Nevertheless you are suggesting to fix the regression in 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. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit








Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Manajit Halder
Hi Semyon,

I could reproduce the behaviour on Ubuntu. But I am curious to know whether this particular mouse operation is a valid operation?

Thanks,
Manajit

On 08-Jan-2018, at 10:06 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

Still didn't get why are you limited to Mac platform  only while you change updates generic code. Why mouse provided by Apple matters here?

--Semyon


On 01/08/2018 01:40 AM, Manajit Halder wrote:
Hi Semyon,

I could not reproduce the behaviour on Mac as on Mac this operation is not possible and hence it won’t be a problem on Mac. It is not possible to press the right button or the left button when the other button is already pressed using both Mouse provided by Apple and Track pad. Once the left button is pressed it need to be release to press the right button and vice versa. 

Thanks,
Manajit

On 05-Jan-2018, at 7:08 AM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

I could reproduce similar behaviour on Linux when mouse is dragged to another component with the left button pressed and then the right button is immediately  pressed. The popup is triggered by the same logic despite it isn't configured for the component.

--Semyon

On 01/04/2018 10:22 AM, Manajit Halder wrote:
Hi Semyon,

Fix for issue JDK-8080729 has caused this regression due to changes in method setVisible(boolean visible) in file CPlatformWindow.java
orderWindow is causing the issue here, if we revert to addChildWindow then the issue is not observed but then the fix for issue JDK-8080729 fails.
Before this change the child window used to be added on to the parent as shown below in the commented code. But after the change child window is ordered above the parent.

Below code causes the regression:

CWrapper.NSWindow.orderWindow(ptr, CWrapper.NSWindow.NSWindowAbove, ownerPtr);
//CWrapper.NSWindow.addChildWindow(ownerPtr, ptr, CWrapper.NSWindow.NSWindowAbove);

Debugging further I found that if we use orderWindow then the new window is considered as new graphics device in the method notifyReshape in LWWindowPeer.java (the method updateGraphicsDevice() returns true) and is the difference between using orderWindow and addChildWindow.

Since the option to add child window is between choosing oderWindow and addChildWindow we don’t have any option to do the fix in the Mac OS native code.

Regards,
Manajit


On 02-Jan-2018, at 11:30 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac OS code only. Nevertheless you are suggesting to fix the regression in 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. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit









Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Semyon Sadetsky

Hi Manajit,

Not sure what did you mean under valid. The general approach is user may do with the mouse whatever he wants nevertheless UI should not be broken. This is just an indication the issue you are trying to fix may be a generic one.

--Semyon


On 01/10/2018 05:21 AM, Manajit Halder wrote:
Hi Semyon,

I could reproduce the behaviour on Ubuntu. But I am curious to know whether this particular mouse operation is a valid operation?

Thanks,
Manajit

On 08-Jan-2018, at 10:06 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

Still didn't get why are you limited to Mac platform  only while you change updates generic code. Why mouse provided by Apple matters here?

--Semyon


On 01/08/2018 01:40 AM, Manajit Halder wrote:
Hi Semyon,

I could not reproduce the behaviour on Mac as on Mac this operation is not possible and hence it won’t be a problem on Mac. It is not possible to press the right button or the left button when the other button is already pressed using both Mouse provided by Apple and Track pad. Once the left button is pressed it need to be release to press the right button and vice versa. 

Thanks,
Manajit

On 05-Jan-2018, at 7:08 AM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

I could reproduce similar behaviour on Linux when mouse is dragged to another component with the left button pressed and then the right button is immediately  pressed. The popup is triggered by the same logic despite it isn't configured for the component.

--Semyon

On 01/04/2018 10:22 AM, Manajit Halder wrote:
Hi Semyon,

Fix for issue JDK-8080729 has caused this regression due to changes in method setVisible(boolean visible) in file CPlatformWindow.java
orderWindow is causing the issue here, if we revert to addChildWindow then the issue is not observed but then the fix for issue JDK-8080729 fails.
Before this change the child window used to be added on to the parent as shown below in the commented code. But after the change child window is ordered above the parent.

Below code causes the regression:

CWrapper.NSWindow.orderWindow(ptr, CWrapper.NSWindow.NSWindowAbove, ownerPtr);
//CWrapper.NSWindow.addChildWindow(ownerPtr, ptr, CWrapper.NSWindow.NSWindowAbove);

Debugging further I found that if we use orderWindow then the new window is considered as new graphics device in the method notifyReshape in LWWindowPeer.java (the method updateGraphicsDevice() returns true) and is the difference between using orderWindow and addChildWindow.

Since the option to add child window is between choosing oderWindow and addChildWindow we don’t have any option to do the fix in the Mac OS native code.

Regards,
Manajit


On 02-Jan-2018, at 11:30 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac OS code only. Nevertheless you are suggesting to fix the regression in 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. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit










Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> Swing dev>[10] Review request for JDK-8189253: [macos] JPopupMenu is inadvertently shown when using setComponentPopupMenu

Manajit Halder
Hi Semyon,

Thank you for the clarification. I will try to fix the problem in the native code.

Thanks,
Manajit


On 10-Jan-2018, at 9:11 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

Not sure what did you mean under valid. The general approach is user may do with the mouse whatever he wants nevertheless UI should not be broken. This is just an indication the issue you are trying to fix may be a generic one.

--Semyon


On 01/10/2018 05:21 AM, Manajit Halder wrote:
Hi Semyon,

I could reproduce the behaviour on Ubuntu. But I am curious to know whether this particular mouse operation is a valid operation?

Thanks,
Manajit

On 08-Jan-2018, at 10:06 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

Still didn't get why are you limited to Mac platform  only while you change updates generic code. Why mouse provided by Apple matters here?

--Semyon


On 01/08/2018 01:40 AM, Manajit Halder wrote:
Hi Semyon,

I could not reproduce the behaviour on Mac as on Mac this operation is not possible and hence it won’t be a problem on Mac. It is not possible to press the right button or the left button when the other button is already pressed using both Mouse provided by Apple and Track pad. Once the left button is pressed it need to be release to press the right button and vice versa. 

Thanks,
Manajit

On 05-Jan-2018, at 7:08 AM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

I could reproduce similar behaviour on Linux when mouse is dragged to another component with the left button pressed and then the right button is immediately  pressed. The popup is triggered by the same logic despite it isn't configured for the component.

--Semyon

On 01/04/2018 10:22 AM, Manajit Halder wrote:
Hi Semyon,

Fix for issue JDK-8080729 has caused this regression due to changes in method setVisible(boolean visible) in file CPlatformWindow.java
orderWindow is causing the issue here, if we revert to addChildWindow then the issue is not observed but then the fix for issue JDK-8080729 fails.
Before this change the child window used to be added on to the parent as shown below in the commented code. But after the change child window is ordered above the parent.

Below code causes the regression:

CWrapper.NSWindow.orderWindow(ptr, CWrapper.NSWindow.NSWindowAbove, ownerPtr);
//CWrapper.NSWindow.addChildWindow(ownerPtr, ptr, CWrapper.NSWindow.NSWindowAbove);

Debugging further I found that if we use orderWindow then the new window is considered as new graphics device in the method notifyReshape in LWWindowPeer.java (the method updateGraphicsDevice() returns true) and is the difference between using orderWindow and addChildWindow.

Since the option to add child window is between choosing oderWindow and addChildWindow we don’t have any option to do the fix in the Mac OS native code.

Regards,
Manajit


On 02-Jan-2018, at 11:30 PM, Semyon Sadetsky <[hidden email]> wrote:

Hi Manajit,

JDK-8080729 bug was Mac OS specific issue and its fix changed the Mac OS code only. Nevertheless you are suggesting to fix the regression in 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. The fix can’t be reversed since it is the choice between addChildWindow or orderWindow. Went through code flow related to the issue but didn’t find any other better place in code to handle this issue. The best way to fix the issue would be to avoid retargeting of events (MOUSE_ENTER and MOUSE_EXIT) between MOUSE_PRESS and MOUSE_RELEASE on the parent window (when the mouse is actually on the child window). Therefore request you to review the webrev.00.

Regards,
Manajit

On 08-Dec-2017, at 9:55 PM, [hidden email] 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.


Cause: 
Issue was due to retargeting of mouse enter exit events. 
MOUSE_ENTER and MOUSE_EXIT events were sent on the parent window (JFrame) in between MOUSE_PRESS and MOUSE_RELEASE events on the modeless JDialog.

Fix:
Retargeting of events is not done in-between MOUSE_PRESS and MOUSE_RELEASE.

Regards,
Manajit