On Wed, 12 Jan 2022 16:53:00 GMT, Alisen Chung <ach...@openjdk.org> wrote:

>> test/jdk/java/awt/TrayIcon/RightClickWhenBalloonDisplayed/RightClickWhenBalloonDisplayed.java
>>  line 113:
>> 
>>> 111:         robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
>>> 112:         robot.delay(1000);
>>> 113:         robot.waitForIdle();
>> 
>> The purpose of the test is to check the action event while the balloon is 
>> visible after the left click (the balloon is shown on the mouse click 
>> event), so removing the left click does not seem correct, no?
>
> Oh, I misunderstood the test. Based on a previous version of this test that 
> was failing I thought the issue was the ActionEvent firing on a TrayIcon 
> right-click that also brought up the balloon message..
> 
> I have a few questions about the expected behavior of TrayIcon:
> Should ActionEvent be triggered on a normal left-click? How about a normal 
> right-click?
> When should ActionEvent not be triggered? Not on right-click during a balloon 
> message? What about left-click during a balloon message?

It is platform dependent:
https://github.com/openjdk/jdk/blob/d70545d71080d534fefd3c9652656549f689f620/src/java.desktop/share/classes/java/awt/TrayIcon.java#L565-L566
Current behavior of OpenJDK is:
* Linux sends it on left button click
* macOS send it on right button click.
* On Windows it can be triggered by a second mouse click on a tray icon(doesn't 
matter which mouse key is used), left mouse click on the balloon, or enter 
keypress on it.

https://github.com/openjdk/jdk/blob/d70545d71080d534fefd3c9652656549f689f620/src/java.desktop/windows/native/libawt/windows/awt_TrayIcon.cpp#L412-L457

[JDK-8195991](https://bugs.openjdk.java.net/browse/JDK-8195991) introduced this 
test, but its description does not conform with its code:

> Right clicking on TrayIcon shouldn't trigger ActionEvent when balloon is 
> displayed.

Given the info above this will be true only for Linux, which does not trigger 
`ACTION_PERFORMED` on right mouse click. 

> int actionPerformedCount = -1;
...
if (actionPerformedCount > 0

So the test code expects to receive 0 or 1  `ACTION_PERFORMED` events. It 
allows the test to pass with our current implementation.



The original test was written along with a fix for Windows back in 
[2005](https://bugs.openjdk.java.net/browse/JDK-6271624). 

The Windows UI have changed since this time, so may be the expectation of not 
receiving of `ACTION_PERFORMED` is no longer valid.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7035

Reply via email to