<AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

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

<AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Shashidhara H V

Hi All, Please review a fix for the below bug:

 

Bug: https://bugs.openjdk.java.net/browse/JDK-8146537

 

Webrev: http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.00/

 

Summary: The windows GetKeyState() api provides the key state of the requested key as of that instant by sampling the current thread’s key messages from the message queue. Any misses either a thread ran faster or slower it is possible to miss the key messages. This is the problem that’s happening under windows 10 wherein the key states are being null for the mouse button press. This problem is mentioned in the msdn as well. On the other hand, a tray icon message click produces NIN_BALLOONUSERCLICK event only upon the left mouse button click and hence there is no check required for the same.

 

Thanks and regards,

Shashi

Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Sergey Bylokhov
Hi, Shashi.
On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
> Summary: The windows GetKeyState() api provides the key state of the
> requested key as of that instant by sampling the current thread’s key
> messages from the message queue. Any misses either a thread ran faster
> or slower it is possible to miss the key messages. This is the problem
> that’s happening under windows 10 wherein the key states are being null
> for the mouse button press. This problem is mentioned in the msdn as
> well. On the other hand, a tray icon message click produces
> NIN_BALLOONUSERCLICK event only upon the left mouse button click and
> hence there is no check required for the same.

The old code also request the state of the different keys like shift,
control, etc. And after the fix we lose this information, probably we
should apply it on top of the modifiers?

Another unclear thing is that we use
java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for
InputEvent as modifier for ActionEvent which does not have such mask.

--
Best regards, Sergey.
Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Shashidhara H V
Hi Sergey, Here is the Webrev containing fixes for your comments.

http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/

Thanks and regards,
Shashi

-----Original Message-----
From: Sergey Bylokhov
Sent: Wednesday, November 22, 2017 4:31 AM
To: Shashidhara Veerabhadraiah <[hidden email]>; [hidden email]
Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Hi, Shashi.
On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
> Summary: The windows GetKeyState() api provides the key state of the
> requested key as of that instant by sampling the current thread's key
> messages from the message queue. Any misses either a thread ran faster
> or slower it is possible to miss the key messages. This is the problem
> that's happening under windows 10 wherein the key states are being
> null for the mouse button press. This problem is mentioned in the msdn
> as well. On the other hand, a tray icon message click produces
> NIN_BALLOONUSERCLICK event only upon the left mouse button click and
> hence there is no check required for the same.

The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?

Another unclear thing is that we use
java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.

--
Best regards, Sergey.
Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Sergey Bylokhov
Looks fine.

On 27/11/2017 21:16, Shashidhara Veerabhadraiah wrote:

> Hi Sergey, Here is the Webrev containing fixes for your comments.
>
> http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
>
> Thanks and regards,
> Shashi
>
> -----Original Message-----
> From: Sergey Bylokhov
> Sent: Wednesday, November 22, 2017 4:31 AM
> To: Shashidhara Veerabhadraiah <[hidden email]>; [hidden email]
> Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10
>
> Hi, Shashi.
> On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
>> Summary: The windows GetKeyState() api provides the key state of the
>> requested key as of that instant by sampling the current thread's key
>> messages from the message queue. Any misses either a thread ran faster
>> or slower it is possible to miss the key messages. This is the problem
>> that's happening under windows 10 wherein the key states are being
>> null for the mouse button press. This problem is mentioned in the msdn
>> as well. On the other hand, a tray icon message click produces
>> NIN_BALLOONUSERCLICK event only upon the left mouse button click and
>> hence there is no check required for the same.
>
> The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
>
> Another unclear thing is that we use
> java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
>
> --
> Best regards, Sergey.
>


--
Best regards, Sergey.
Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Shashidhara H V
Thank you Sergey for your review.

Thanks and regards,
Shashi

> On 04-Dec-2017, at 1:03 PM, Sergey Bylokhov <[hidden email]> wrote:
>
> Looks fine.
>
> On 27/11/2017 21:16, Shashidhara Veerabhadraiah wrote:
>> Hi Sergey, Here is the Webrev containing fixes for your comments.
>> http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
>> Thanks and regards,
>> Shashi
>> -----Original Message-----
>> From: Sergey Bylokhov
>> Sent: Wednesday, November 22, 2017 4:31 AM
>> To: Shashidhara Veerabhadraiah <[hidden email]>; [hidden email]
>> Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10
>> Hi, Shashi.
>> On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
>>> Summary: The windows GetKeyState() api provides the key state of the
>>> requested key as of that instant by sampling the current thread's key
>>> messages from the message queue. Any misses either a thread ran faster
>>> or slower it is possible to miss the key messages. This is the problem
>>> that's happening under windows 10 wherein the key states are being
>>> null for the mouse button press. This problem is mentioned in the msdn
>>> as well. On the other hand, a tray icon message click produces
>>> NIN_BALLOONUSERCLICK event only upon the left mouse button click and
>>> hence there is no check required for the same.
>> The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
>> Another unclear thing is that we use
>> java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
>> --
>> Best regards, Sergey.
>
>
> --
> Best regards, Sergey.

Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

semyon.sadetsky
In reply to this post by Shashidhara H V
Hi Shashi,

Shouldn't the BUTTON1_DOWN_MASK be added to the modifiers of the action?

--Semyon

On 11/27/2017 09:16 PM, Shashidhara Veerabhadraiah wrote:

> Hi Sergey, Here is the Webrev containing fixes for your comments.
>
> http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
>
> Thanks and regards,
> Shashi
>
> -----Original Message-----
> From: Sergey Bylokhov
> Sent: Wednesday, November 22, 2017 4:31 AM
> To: Shashidhara Veerabhadraiah <[hidden email]>; [hidden email]
> Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10
>
> Hi, Shashi.
> On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
>> Summary: The windows GetKeyState() api provides the key state of the
>> requested key as of that instant by sampling the current thread's key
>> messages from the message queue. Any misses either a thread ran faster
>> or slower it is possible to miss the key messages. This is the problem
>> that's happening under windows 10 wherein the key states are being
>> null for the mouse button press. This problem is mentioned in the msdn
>> as well. On the other hand, a tray icon message click produces
>> NIN_BALLOONUSERCLICK event only upon the left mouse button click and
>> hence there is no check required for the same.
> The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
>
> Another unclear thing is that we use
> java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
>
> --
> Best regards, Sergey.

Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Shashidhara H V
Hi Semyon, Thank for your review.

BUTTON1_DOWN_MASK upon the GetJavaModifiers() provide if the left mouse button virtual key is pressed or not. Currently we are unable to capture left button click state using the ::GetKeyState(). The event NIN_BALLONUSERCLICK is generated only upon the left mouse click and any other action does not raise this event. Hence there is no need to check it once again.

SendActionEvent() takes on the GetActionModifiers() which is kept as it.

Hope I answer your question. Have a good day Semyon.

Thanks and regards,
Shashi

> On 04-Dec-2017, at 9:45 PM, Semyon Sadetsky <[hidden email]> wrote:
>
> Hi Shashi,
>
> Shouldn't the BUTTON1_DOWN_MASK be added to the modifiers of the action?
>
> --Semyon
>
> On 11/27/2017 09:16 PM, Shashidhara Veerabhadraiah wrote:
>> Hi Sergey, Here is the Webrev containing fixes for your comments.
>>
>> http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
>>
>> Thanks and regards,
>> Shashi
>>
>> -----Original Message-----
>> From: Sergey Bylokhov
>> Sent: Wednesday, November 22, 2017 4:31 AM
>> To: Shashidhara Veerabhadraiah <[hidden email]>; [hidden email]
>> Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10
>>
>> Hi, Shashi.
>> On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
>>> Summary: The windows GetKeyState() api provides the key state of the
>>> requested key as of that instant by sampling the current thread's key
>>> messages from the message queue. Any misses either a thread ran faster
>>> or slower it is possible to miss the key messages. This is the problem
>>> that's happening under windows 10 wherein the key states are being
>>> null for the mouse button press. This problem is mentioned in the msdn
>>> as well. On the other hand, a tray icon message click produces
>>> NIN_BALLOONUSERCLICK event only upon the left mouse button click and
>>> hence there is no check required for the same.
>> The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
>>
>> Another unclear thing is that we use
>> java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
>>
>> --
>> Best regards, Sergey.
>

Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

semyon.sadetsky
Hi Shashi,

I meant, since before the modifier has been sent with the action it
should be sent now as well for compatibility. Or this code has never worked?

--Semyon

On 12/04/2017 09:30 AM, shashidhara veerabhadraiah wrote:

> Hi Semyon, Thank for your review.
>
> BUTTON1_DOWN_MASK upon the GetJavaModifiers() provide if the left mouse button virtual key is pressed or not. Currently we are unable to capture left button click state using the ::GetKeyState(). The event NIN_BALLONUSERCLICK is generated only upon the left mouse click and any other action does not raise this event. Hence there is no need to check it once again.
>
> SendActionEvent() takes on the GetActionModifiers() which is kept as it.
>
> Hope I answer your question. Have a good day Semyon.
>
> Thanks and regards,
> Shashi
>
>> On 04-Dec-2017, at 9:45 PM, Semyon Sadetsky <[hidden email]> wrote:
>>
>> Hi Shashi,
>>
>> Shouldn't the BUTTON1_DOWN_MASK be added to the modifiers of the action?
>>
>> --Semyon
>>
>> On 11/27/2017 09:16 PM, Shashidhara Veerabhadraiah wrote:
>>> Hi Sergey, Here is the Webrev containing fixes for your comments.
>>>
>>> http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
>>>
>>> Thanks and regards,
>>> Shashi
>>>
>>> -----Original Message-----
>>> From: Sergey Bylokhov
>>> Sent: Wednesday, November 22, 2017 4:31 AM
>>> To: Shashidhara Veerabhadraiah <[hidden email]>; [hidden email]
>>> Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10
>>>
>>> Hi, Shashi.
>>> On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
>>>> Summary: The windows GetKeyState() api provides the key state of the
>>>> requested key as of that instant by sampling the current thread's key
>>>> messages from the message queue. Any misses either a thread ran faster
>>>> or slower it is possible to miss the key messages. This is the problem
>>>> that's happening under windows 10 wherein the key states are being
>>>> null for the mouse button press. This problem is mentioned in the msdn
>>>> as well. On the other hand, a tray icon message click produces
>>>> NIN_BALLOONUSERCLICK event only upon the left mouse button click and
>>>> hence there is no check required for the same.
>>> The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
>>>
>>> Another unclear thing is that we use
>>> java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
>>>
>>> --
>>> Best regards, Sergey.

Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Shashidhara H V
Hi Semyon, the mouse key state is already part of the input to the function via the flags variable(if there is any) and same message is already sent to the action event where they only save the message. This part is kept same as earlier.

shashi

-----Original Message-----
From: Semyon Sadetsky
Sent: Tuesday, December 5, 2017 9:47 PM
To: shashidhara veerabhadraiah <[hidden email]>
Cc: [hidden email]
Subject: Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Hi Shashi,

I meant, since before the modifier has been sent with the action it should be sent now as well for compatibility. Or this code has never worked?

--Semyon

On 12/04/2017 09:30 AM, shashidhara veerabhadraiah wrote:

> Hi Semyon, Thank for your review.
>
> BUTTON1_DOWN_MASK upon the GetJavaModifiers() provide if the left mouse button virtual key is pressed or not. Currently we are unable to capture left button click state using the ::GetKeyState(). The event NIN_BALLONUSERCLICK is generated only upon the left mouse click and any other action does not raise this event. Hence there is no need to check it once again.
>
> SendActionEvent() takes on the GetActionModifiers() which is kept as it.
>
> Hope I answer your question. Have a good day Semyon.
>
> Thanks and regards,
> Shashi
>
>> On 04-Dec-2017, at 9:45 PM, Semyon Sadetsky <[hidden email]> wrote:
>>
>> Hi Shashi,
>>
>> Shouldn't the BUTTON1_DOWN_MASK be added to the modifiers of the action?
>>
>> --Semyon
>>
>> On 11/27/2017 09:16 PM, Shashidhara Veerabhadraiah wrote:
>>> Hi Sergey, Here is the Webrev containing fixes for your comments.
>>>
>>> http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
>>>
>>> Thanks and regards,
>>> Shashi
>>>
>>> -----Original Message-----
>>> From: Sergey Bylokhov
>>> Sent: Wednesday, November 22, 2017 4:31 AM
>>> To: Shashidhara Veerabhadraiah
>>> <[hidden email]>; [hidden email]
>>> Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work
>>> in WIndows 10
>>>
>>> Hi, Shashi.
>>> On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
>>>> Summary: The windows GetKeyState() api provides the key state of
>>>> the requested key as of that instant by sampling the current
>>>> thread's key messages from the message queue. Any misses either a
>>>> thread ran faster or slower it is possible to miss the key
>>>> messages. This is the problem that's happening under windows 10
>>>> wherein the key states are being null for the mouse button press.
>>>> This problem is mentioned in the msdn as well. On the other hand, a
>>>> tray icon message click produces NIN_BALLOONUSERCLICK event only
>>>> upon the left mouse button click and hence there is no check required for the same.
>>> The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
>>>
>>> Another unclear thing is that we use
>>> java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
>>>
>>> --
>>> Best regards, Sergey.

Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

semyon.sadetsky
Hi Shashi,

On 12/05/2017 08:13 PM, Shashidhara Veerabhadraiah wrote:

> Hi Semyon, the mouse key state is already part of the input to the function via the flags variable(if there is any) and same message is already sent to the action event where
The flags parameter doesn't contain any modifiers because it is always
equals to zero.
> they only save the message. This part is kept same as earlier.
The action event receives modifiers from  the 3rd parameter of the
SendMouseEvent function which now may not contain any mouse modifiers,
if I correctly understand the root cause of the issue. My question is
about compatibility. If this code whenever have been working (for
example, in Windows 7) the BUTTON1_DOWN_MASK have been always set in the
action event. After your fix it may not be set (or even will never be
set anymore). Does it affect old applications which might expect a
button presence in the action?

--Semyon

>
> shashi
>
> -----Original Message-----
> From: Semyon Sadetsky
> Sent: Tuesday, December 5, 2017 9:47 PM
> To: shashidhara veerabhadraiah <[hidden email]>
> Cc: [hidden email]
> Subject: Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10
>
> Hi Shashi,
>
> I meant, since before the modifier has been sent with the action it should be sent now as well for compatibility. Or this code has never worked?
>
> --Semyon
>
> On 12/04/2017 09:30 AM, shashidhara veerabhadraiah wrote:
>> Hi Semyon, Thank for your review.
>>
>> BUTTON1_DOWN_MASK upon the GetJavaModifiers() provide if the left mouse button virtual key is pressed or not. Currently we are unable to capture left button click state using the ::GetKeyState(). The event NIN_BALLONUSERCLICK is generated only upon the left mouse click and any other action does not raise this event. Hence there is no need to check it once again.
>>
>> SendActionEvent() takes on the GetActionModifiers() which is kept as it.
>>
>> Hope I answer your question. Have a good day Semyon.
>>
>> Thanks and regards,
>> Shashi
>>
>>> On 04-Dec-2017, at 9:45 PM, Semyon Sadetsky <[hidden email]> wrote:
>>>
>>> Hi Shashi,
>>>
>>> Shouldn't the BUTTON1_DOWN_MASK be added to the modifiers of the action?
>>>
>>> --Semyon
>>>
>>> On 11/27/2017 09:16 PM, Shashidhara Veerabhadraiah wrote:
>>>> Hi Sergey, Here is the Webrev containing fixes for your comments.
>>>>
>>>> http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
>>>>
>>>> Thanks and regards,
>>>> Shashi
>>>>
>>>> -----Original Message-----
>>>> From: Sergey Bylokhov
>>>> Sent: Wednesday, November 22, 2017 4:31 AM
>>>> To: Shashidhara Veerabhadraiah
>>>> <[hidden email]>; [hidden email]
>>>> Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work
>>>> in WIndows 10
>>>>
>>>> Hi, Shashi.
>>>> On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
>>>>> Summary: The windows GetKeyState() api provides the key state of
>>>>> the requested key as of that instant by sampling the current
>>>>> thread's key messages from the message queue. Any misses either a
>>>>> thread ran faster or slower it is possible to miss the key
>>>>> messages. This is the problem that's happening under windows 10
>>>>> wherein the key states are being null for the mouse button press.
>>>>> This problem is mentioned in the msdn as well. On the other hand, a
>>>>> tray icon message click produces NIN_BALLOONUSERCLICK event only
>>>>> upon the left mouse button click and hence there is no check required for the same.
>>>> The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
>>>>
>>>> Another unclear thing is that we use
>>>> java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
>>>>
>>>> --
>>>> Best regards, Sergey.

Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Shashidhara H V
Hi Semyon, Sure I understand your concern.

Will update web rev on this and get back to you soon.

Thanks and regards,
Shashi

> On 07-Dec-2017, at 12:12 AM, Semyon Sadetsky <[hidden email]> wrote:
>
> Hi Shashi,
>
> On 12/05/2017 08:13 PM, Shashidhara Veerabhadraiah wrote:
>
>> Hi Semyon, the mouse key state is already part of the input to the function via the flags variable(if there is any) and same message is already sent to the action event where
> The flags parameter doesn't contain any modifiers because it is always equals to zero.
>> they only save the message. This part is kept same as earlier.
> The action event receives modifiers from  the 3rd parameter of the SendMouseEvent function which now may not contain any mouse modifiers, if I correctly understand the root cause of the issue. My question is about compatibility. If this code whenever have been working (for example, in Windows 7) the BUTTON1_DOWN_MASK have been always set in the action event. After your fix it may not be set (or even will never be set anymore). Does it affect old applications which might expect a button presence in the action?
>
> --Semyon
>>
>> shashi
>>
>> -----Original Message-----
>> From: Semyon Sadetsky
>> Sent: Tuesday, December 5, 2017 9:47 PM
>> To: shashidhara veerabhadraiah <[hidden email]>
>> Cc: [hidden email]
>> Subject: Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10
>>
>> Hi Shashi,
>>
>> I meant, since before the modifier has been sent with the action it should be sent now as well for compatibility. Or this code has never worked?
>>
>> --Semyon
>>
>> On 12/04/2017 09:30 AM, shashidhara veerabhadraiah wrote:
>>> Hi Semyon, Thank for your review.
>>>
>>> BUTTON1_DOWN_MASK upon the GetJavaModifiers() provide if the left mouse button virtual key is pressed or not. Currently we are unable to capture left button click state using the ::GetKeyState(). The event NIN_BALLONUSERCLICK is generated only upon the left mouse click and any other action does not raise this event. Hence there is no need to check it once again.
>>>
>>> SendActionEvent() takes on the GetActionModifiers() which is kept as it.
>>>
>>> Hope I answer your question. Have a good day Semyon.
>>>
>>> Thanks and regards,
>>> Shashi
>>>
>>>> On 04-Dec-2017, at 9:45 PM, Semyon Sadetsky <[hidden email]> wrote:
>>>>
>>>> Hi Shashi,
>>>>
>>>> Shouldn't the BUTTON1_DOWN_MASK be added to the modifiers of the action?
>>>>
>>>> --Semyon
>>>>
>>>> On 11/27/2017 09:16 PM, Shashidhara Veerabhadraiah wrote:
>>>>> Hi Sergey, Here is the Webrev containing fixes for your comments.
>>>>>
>>>>> http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
>>>>>
>>>>> Thanks and regards,
>>>>> Shashi
>>>>>
>>>>> -----Original Message-----
>>>>> From: Sergey Bylokhov
>>>>> Sent: Wednesday, November 22, 2017 4:31 AM
>>>>> To: Shashidhara Veerabhadraiah
>>>>> <[hidden email]>; [hidden email]
>>>>> Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work
>>>>> in WIndows 10
>>>>>
>>>>> Hi, Shashi.
>>>>> On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
>>>>>> Summary: The windows GetKeyState() api provides the key state of
>>>>>> the requested key as of that instant by sampling the current
>>>>>> thread's key messages from the message queue. Any misses either a
>>>>>> thread ran faster or slower it is possible to miss the key
>>>>>> messages. This is the problem that's happening under windows 10
>>>>>> wherein the key states are being null for the mouse button press.
>>>>>> This problem is mentioned in the msdn as well. On the other hand, a
>>>>>> tray icon message click produces NIN_BALLOONUSERCLICK event only
>>>>>> upon the left mouse button click and hence there is no check required for the same.
>>>>> The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
>>>>>
>>>>> Another unclear thing is that we use
>>>>> java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
>>>>>
>>>>> --
>>>>> Best regards, Sergey.
>

Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

semyon.sadetsky
Hi Shashi,

I mixed up GetActionModifiers and GetJavaModifiers. GetActionModifiers shouldn't contain mouse button mask.

The fix looks good. 

--Semyon
On 12/6/17 10:57 AM, shashidhara veerabhadraiah wrote:
Hi Semyon, Sure I understand your concern.

Will update web rev on this and get back to you soon.

Thanks and regards,
Shashi

On 07-Dec-2017, at 12:12 AM, Semyon Sadetsky [hidden email] wrote:

Hi Shashi,

On 12/05/2017 08:13 PM, Shashidhara Veerabhadraiah wrote:

Hi Semyon, the mouse key state is already part of the input to the function via the flags variable(if there is any) and same message is already sent to the action event where
The flags parameter doesn't contain any modifiers because it is always equals to zero.
they only save the message. This part is kept same as earlier.
The action event receives modifiers from  the 3rd parameter of the SendMouseEvent function which now may not contain any mouse modifiers, if I correctly understand the root cause of the issue. My question is about compatibility. If this code whenever have been working (for example, in Windows 7) the BUTTON1_DOWN_MASK have been always set in the action event. After your fix it may not be set (or even will never be set anymore). Does it affect old applications which might expect a button presence in the action?

--Semyon
shashi

-----Original Message-----
From: Semyon Sadetsky
Sent: Tuesday, December 5, 2017 9:47 PM
To: shashidhara veerabhadraiah [hidden email]
Cc: [hidden email]
Subject: Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Hi Shashi,

I meant, since before the modifier has been sent with the action it should be sent now as well for compatibility. Or this code has never worked?

--Semyon

On 12/04/2017 09:30 AM, shashidhara veerabhadraiah wrote:
Hi Semyon, Thank for your review.

BUTTON1_DOWN_MASK upon the GetJavaModifiers() provide if the left mouse button virtual key is pressed or not. Currently we are unable to capture left button click state using the ::GetKeyState(). The event NIN_BALLONUSERCLICK is generated only upon the left mouse click and any other action does not raise this event. Hence there is no need to check it once again.

SendActionEvent() takes on the GetActionModifiers() which is kept as it.

Hope I answer your question. Have a good day Semyon.

Thanks and regards,
Shashi

On 04-Dec-2017, at 9:45 PM, Semyon Sadetsky [hidden email] wrote:

Hi Shashi,

Shouldn't the BUTTON1_DOWN_MASK be added to the modifiers of the action?

--Semyon

On 11/27/2017 09:16 PM, Shashidhara Veerabhadraiah wrote:
Hi Sergey, Here is the Webrev containing fixes for your comments.

http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/

Thanks and regards,
Shashi

-----Original Message-----
From: Sergey Bylokhov
Sent: Wednesday, November 22, 2017 4:31 AM
To: Shashidhara Veerabhadraiah
[hidden email]; [hidden email]
Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work
in WIndows 10

Hi, Shashi.
On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
Summary: The windows GetKeyState() api provides the key state of
the requested key as of that instant by sampling the current
thread's key messages from the message queue. Any misses either a
thread ran faster or slower it is possible to miss the key
messages. This is the problem that's happening under windows 10
wherein the key states are being null for the mouse button press.
This problem is mentioned in the msdn as well. On the other hand, a
tray icon message click produces NIN_BALLOONUSERCLICK event only
upon the left mouse button click and hence there is no check required for the same.
The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?

Another unclear thing is that we use
java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.

--
Best regards, Sergey.


Reply | Threaded
Open this post in threaded view
|

Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

Shashidhara H V

Hi Semyon, Thanks for your review.

Even I had got mixed up between them initiallyJ.

 

Thank you Sergey for your initial review.

 

Have a nice day.

 

Thanks and regards,

Shashi

 

From: Semyon Sadetsky
Sent: Friday, December 8, 2017 9:20 PM
To: shashidhara veerabhadraiah <[hidden email]>
Cc: [hidden email]
Subject: Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10

 

Hi Shashi,
 
I mixed up GetActionModifiers and GetJavaModifiers. GetActionModifiers shouldn't contain mouse button mask.
 
The fix looks good. 
 
--Semyon

On 12/6/17 10:57 AM, shashidhara veerabhadraiah wrote:

Hi Semyon, Sure I understand your concern.
 
Will update web rev on this and get back to you soon.
 
Thanks and regards,
Shashi
 
On 07-Dec-2017, at 12:12 AM, Semyon Sadetsky [hidden email] wrote:
 
Hi Shashi,
 
On 12/05/2017 08:13 PM, Shashidhara Veerabhadraiah wrote:
 
Hi Semyon, the mouse key state is already part of the input to the function via the flags variable(if there is any) and same message is already sent to the action event where
The flags parameter doesn't contain any modifiers because it is always equals to zero.
they only save the message. This part is kept same as earlier.
The action event receives modifiers from  the 3rd parameter of the SendMouseEvent function which now may not contain any mouse modifiers, if I correctly understand the root cause of the issue. My question is about compatibility. If this code whenever have been working (for example, in Windows 7) the BUTTON1_DOWN_MASK have been always set in the action event. After your fix it may not be set (or even will never be set anymore). Does it affect old applications which might expect a button presence in the action?
 
--Semyon
 
shashi
 
-----Original Message-----
From: Semyon Sadetsky
Sent: Tuesday, December 5, 2017 9:47 PM
To: shashidhara veerabhadraiah [hidden email]
Cc: [hidden email]
Subject: Re: <AWT Dev> [10] JDK-8146537: TrayIcon Action Listener doesnt work in WIndows 10
 
Hi Shashi,
 
I meant, since before the modifier has been sent with the action it should be sent now as well for compatibility. Or this code has never worked?
 
--Semyon
 
On 12/04/2017 09:30 AM, shashidhara veerabhadraiah wrote:
Hi Semyon, Thank for your review.
 
BUTTON1_DOWN_MASK upon the GetJavaModifiers() provide if the left mouse button virtual key is pressed or not. Currently we are unable to capture left button click state using the ::GetKeyState(). The event NIN_BALLONUSERCLICK is generated only upon the left mouse click and any other action does not raise this event. Hence there is no need to check it once again.
 
SendActionEvent() takes on the GetActionModifiers() which is kept as it.
 
Hope I answer your question. Have a good day Semyon.
 
Thanks and regards,
Shashi
 
On 04-Dec-2017, at 9:45 PM, Semyon Sadetsky [hidden email] wrote:
 
Hi Shashi,
 
Shouldn't the BUTTON1_DOWN_MASK be added to the modifiers of the action?
 
--Semyon
 
On 11/27/2017 09:16 PM, Shashidhara Veerabhadraiah wrote:
Hi Sergey, Here is the Webrev containing fixes for your comments.
 
http://cr.openjdk.java.net/~sveerabhadra/8146537/webrev.01/
 
Thanks and regards,
Shashi
 
-----Original Message-----
From: Sergey Bylokhov
Sent: Wednesday, November 22, 2017 4:31 AM
To: Shashidhara Veerabhadraiah
[hidden email]; [hidden email]
Subject: Re: [10] JDK-8146537: TrayIcon Action Listener doesnt work
in WIndows 10
 
Hi, Shashi.
On 20/11/2017 02:10, Shashidhara Veerabhadraiah wrote:
Summary: The windows GetKeyState() api provides the key state of
the requested key as of that instant by sampling the current
thread's key messages from the message queue. Any misses either a
thread ran faster or slower it is possible to miss the key
messages. This is the problem that's happening under windows 10
wherein the key states are being null for the mouse button press.
This problem is mentioned in the msdn as well. On the other hand, a
tray icon message click produces NIN_BALLOONUSERCLICK event only
upon the left mouse button click and hence there is no check required for the same.
The old code also request the state of the different keys like shift, control, etc. And after the fix we lose this information, probably we should apply it on top of the modifiers?
 
Another unclear thing is that we use
java_awt_event_InputEvent_BUTTON1_DOWN_MASK which is a mask for InputEvent as modifier for ActionEvent which does not have such mask.
 
--
Best regards, Sergey.