Re: [Integrated] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-27 Thread Kevin Rushforth
Changeset: 1d670f18
Author:Florian Kirmaier 
Committer: Kevin Rushforth 
Date:  2019-11-27 16:20:12 +
URL:   https://git.openjdk.java.net/jfx/commit/1d670f18

8200224: Multiple press event when JFXPanel gains focus

Reviewed-by: kcr, psadhukhan

! modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java
+ tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java


Re: [Rev 05] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-27 Thread Florian Kirmaier
The pull request has been updated with additional changes.



Added commits:
 - fa465c55: JDK-8200224

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/25/files
  - new: https://git.openjdk.java.net/jfx/pull/25/files/24385eb8..fa465c55

Webrevs:
 - full: https://webrevs.openjdk.java.net/jfx/25/webrev.05
 - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.04-05

  Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jfx/pull/25.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Rev 04] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-27 Thread Florian Kirmaier
On Wed, 27 Nov 2019 15:13:33 GMT, Kevin Rushforth  wrote:

> On Wed, 27 Nov 2019 05:31:27 GMT, Prasanta Sadhukhan  
> wrote:
> 
>> On Tue, 26 Nov 2019 13:06:36 GMT, Florian Kirmaier  
>> wrote:
>> 
>>> The pull request has been updated with additional changes.
>>> 
>>> 
>>> 
>>> Added commits:
>>>  - 24385eb8: JDK-8200224
>>>  - e0829ad3: JDK-8200224
>>>  - c190384f: JDK-8200224
>>>  - 17b458b1: JDK-8200224
>>> 
>>> Changes:
>>>   - all: https://git.openjdk.java.net/jfx/pull/25/files
>>>   - new: https://git.openjdk.java.net/jfx/pull/25/files/44774dfb..24385eb8
>>> 
>>> Webrevs:
>>>  - full: https://webrevs.openjdk.java.net/jfx/25/webrev.04
>>>  - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.03-04
>>> 
>>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>>   Stats: 141 lines in 2 files changed: 123 ins; 11 del; 7 mod
>>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
>> 
>> modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 449:
>> 
>>> 448: requestFocus();
>>> 449: // This fixes JDK-8087914 without causing JDK-8200224
>>> 450: // It is safe, because in JavaFX only the method 
>>> "setFocused(true)" is called,
>> 
>> We actually do not clutter source code with bugids, it will be good if it 
>> can be removed with proper comments maybe something like "extra simulated 
>> mouse pressed event is removed by making the JavaFX scene focused"
> 
> In general, we no longer reference bug IDs in source code, so I agree with 
> the recommendation to reword the comment.
> 
> @FlorianKirmaier - can you reword as suggested? Once you are done, you can 
> integrate it (using the `/integrate` command), and I will sponsor it. There 
> will likely be a delay due to the US Thanksgiving holiday.

Done

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Rev 04] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-27 Thread Kevin Rushforth
On Wed, 27 Nov 2019 05:31:27 GMT, Prasanta Sadhukhan  
wrote:

> On Tue, 26 Nov 2019 13:06:36 GMT, Florian Kirmaier  
> wrote:
> 
>> The pull request has been updated with additional changes.
>> 
>> 
>> 
>> Added commits:
>>  - 24385eb8: JDK-8200224
>>  - e0829ad3: JDK-8200224
>>  - c190384f: JDK-8200224
>>  - 17b458b1: JDK-8200224
>> 
>> Changes:
>>   - all: https://git.openjdk.java.net/jfx/pull/25/files
>>   - new: https://git.openjdk.java.net/jfx/pull/25/files/44774dfb..24385eb8
>> 
>> Webrevs:
>>  - full: https://webrevs.openjdk.java.net/jfx/25/webrev.04
>>  - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.03-04
>> 
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>   Stats: 141 lines in 2 files changed: 123 ins; 11 del; 7 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
> 
> modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 449:
> 
>> 448: requestFocus();
>> 449: // This fixes JDK-8087914 without causing JDK-8200224
>> 450: // It is safe, because in JavaFX only the method 
>> "setFocused(true)" is called,
> 
> We actually do not clutter source code with bugids, it will be good if it can 
> be removed with proper comments maybe something like "extra simulated mouse 
> pressed event is removed by making the JavaFX scene focused"

In general, we no longer reference bug IDs in source code, so I agree with the 
recommendation to reword the comment.

@FlorianKirmaier - can you reword as suggested? Once you are done, you can 
integrate it (using the `/integrate` command), and I will sponsor it. There 
will likely be a delay due to the US Thanksgiving holiday.

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Approved] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Prasanta Sadhukhan
On Tue, 26 Nov 2019 13:06:36 GMT, Florian Kirmaier  
wrote:

> The pull request has been updated with additional changes.
> 
> 
> 
> Added commits:
>  - 24385eb8: JDK-8200224
>  - e0829ad3: JDK-8200224
>  - c190384f: JDK-8200224
>  - 17b458b1: JDK-8200224
> 
> Changes:
>   - all: https://git.openjdk.java.net/jfx/pull/25/files
>   - new: https://git.openjdk.java.net/jfx/pull/25/files/44774dfb..24385eb8
> 
> Webrevs:
>  - full: https://webrevs.openjdk.java.net/jfx/25/webrev.04
>  - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.03-04
> 
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 141 lines in 2 files changed: 123 ins; 11 del; 7 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

Looks good albeit with minor suggestion regarding presence of bugid in comment



Approved by psadhukhan (Reviewer).

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Rev 04] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Prasanta Sadhukhan
On Tue, 26 Nov 2019 13:06:36 GMT, Florian Kirmaier  
wrote:

> The pull request has been updated with additional changes.
> 
> 
> 
> Added commits:
>  - 24385eb8: JDK-8200224
>  - e0829ad3: JDK-8200224
>  - c190384f: JDK-8200224
>  - 17b458b1: JDK-8200224
> 
> Changes:
>   - all: https://git.openjdk.java.net/jfx/pull/25/files
>   - new: https://git.openjdk.java.net/jfx/pull/25/files/44774dfb..24385eb8
> 
> Webrevs:
>  - full: https://webrevs.openjdk.java.net/jfx/25/webrev.04
>  - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.03-04
> 
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 141 lines in 2 files changed: 123 ins; 11 del; 7 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 449:

> 448: requestFocus();
> 449: // This fixes JDK-8087914 without causing JDK-8200224
> 450: // It is safe, because in JavaFX only the method 
> "setFocused(true)" is called,

We actually do not clutter source code with bugids, it will be good if it can 
be removed with proper comments maybe something like "extra simulated mouse 
pressed event is removed by making the JavaFX scene focused"

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Approved] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Kevin Rushforth
On Tue, 26 Nov 2019 13:06:36 GMT, Florian Kirmaier  
wrote:

> The pull request has been updated with additional changes.
> 
> 
> 
> Added commits:
>  - 24385eb8: JDK-8200224
>  - e0829ad3: JDK-8200224
>  - c190384f: JDK-8200224
>  - 17b458b1: JDK-8200224
> 
> Changes:
>   - all: https://git.openjdk.java.net/jfx/pull/25/files
>   - new: https://git.openjdk.java.net/jfx/pull/25/files/44774dfb..24385eb8
> 
> Webrevs:
>  - full: https://webrevs.openjdk.java.net/jfx/25/webrev.04
>  - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.03-04
> 
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 141 lines in 2 files changed: 123 ins; 11 del; 7 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

All looks good now. As a reminder, this will need a second reviewer.



Approved by kcr (Lead).

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Kevin Rushforth
On Tue, 26 Nov 2019 13:06:38 GMT, Florian Kirmaier  
wrote:

> On Tue, 26 Nov 2019 09:24:01 GMT, Kevin Rushforth  wrote:
> 
>> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>>  wrote:
>> 
>>> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
>>> 
>>> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
>>> always a double click.
>>> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
>>> JFXPanel ignored if another swing component has focus).
>>> This fix introduced synthesized press-events, which is an unsafe fix for 
>>> the problem.
>>> 
>>> The pull request introduces a new fix for the problem.
>>> Instead of simulating new input-events, we set JavaFX Scene/Window to 
>>> focused.
>>> We do so, by using setFocused.
>>> When the original Swing-Focus event is called slightly later, it won't have 
>>> any side-effects,
>>> because calling setFocused just sets the value of a boolean property.
>>> 
>>> I've now also added a unit-test for the problem.
>>> 
>>> 
>>> 
>>> Commits:
>>>  - 314e423c: JDK-8200224
>>>  - 725e5fef: JDK-8200224
>>> 
>>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
>> 
>> I left a couple additional comments about the test changes. Namely:
>> 
>> 1. You didn't fully revert the changes to `SwingFXUtilsTest`
>> 2. Your new test should be put in its own class in `test.javafx.embed.swing` 
>> (and not in the exist mac-only Robot test)
>> 
>> tests/system/src/test/java/test/javafx/embed/swing/SwingFXUtilsTest.java 
>> line 87:
>> 
>>> 86: testFromFXImg("opaque.gif");
>>> 87: testFromFXImg("opaque.jpg");
>>> 88: testFromFXImg("opaque.png");
>> 
>> You didn't fully revert your change to this file. The above needs to be 
>> restored such that when you are done, this file is unchanged versus master, 
>> and not part of the PR.
>> 
>> tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java 
>> line 25:
>> 
>>> 24:  */
>>> 25: package test.robot.javafx.embed.swing;
>>> 26: 
>> 
>> Since you aren't using `Robot` I'll repeat my earlier recommendation to put 
>> your new test in `test.javafx.embed.swing` (as a new test class) rather than 
>> modifying this existing test class. This class isn't suitable anyway, since 
>> it is only run on Mac.
>> 
>> tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java 
>> line 40:
>> 
>>> 39: import javax.swing.*;
>>> 40: import java.awt.*;
>>> 41: import java.awt.event.InputEvent;
>> 
>> The use of wild card imports is discouraged (except for static imports).
>> 
>> tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java 
>> line 129:
>> 
>>> 128: JPanel jpanel = new JPanel();
>>> 129: jpanel.add(fxPnl);
>>> 130: jframe.setContentPane(jpanel);
>> 
>> You didn't add an initial dummy `JFXPanel` so I suspect it will still not 
>> catch the bug (meaning it will still pass even without your patch).
>> 
>> 
>> 
>> Changes requested by kcr (Lead).
> 
> 1. I've restored the test. But the git history is now very chaotic. 
> Especially the moves might cause problems. Do the commits get squashed after 
> merging? Otherwise, it might make sense, to redo the changes on a fresh 
> branch and create a new pull request.
> 2. The test works now on windows. : )

Yes, the commits are squashed, so don't worry about the history (in worst case 
I would ask you to do a squash-rebase / force push rather than create a new PR, 
but that isn't needed here).

At first glance the changes you made look good. I'll take a closer look later.

@prsadhuk please also review this.

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Rev 04] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Florian Kirmaier
The pull request has been updated with additional changes.



Added commits:
 - 24385eb8: JDK-8200224
 - e0829ad3: JDK-8200224
 - c190384f: JDK-8200224
 - 17b458b1: JDK-8200224

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/25/files
  - new: https://git.openjdk.java.net/jfx/pull/25/files/44774dfb..24385eb8

Webrevs:
 - full: https://webrevs.openjdk.java.net/jfx/25/webrev.04
 - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.03-04

  Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
  Stats: 141 lines in 2 files changed: 123 ins; 11 del; 7 mod
  Patch: https://git.openjdk.java.net/jfx/pull/25.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Florian Kirmaier
On Tue, 26 Nov 2019 09:24:01 GMT, Kevin Rushforth  wrote:

> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>  wrote:
> 
>> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
>> 
>> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
>> always a double click.
>> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
>> JFXPanel ignored if another swing component has focus).
>> This fix introduced synthesized press-events, which is an unsafe fix for the 
>> problem.
>> 
>> The pull request introduces a new fix for the problem.
>> Instead of simulating new input-events, we set JavaFX Scene/Window to 
>> focused.
>> We do so, by using setFocused.
>> When the original Swing-Focus event is called slightly later, it won't have 
>> any side-effects,
>> because calling setFocused just sets the value of a boolean property.
>> 
>> I've now also added a unit-test for the problem.
>> 
>> 
>> 
>> Commits:
>>  - 314e423c: JDK-8200224
>>  - 725e5fef: JDK-8200224
>> 
>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
> 
> I left a couple additional comments about the test changes. Namely:
> 
> 1. You didn't fully revert the changes to `SwingFXUtilsTest`
> 2. Your new test should be put in its own class in `test.javafx.embed.swing` 
> (and not in the exist mac-only Robot test)
> 
> tests/system/src/test/java/test/javafx/embed/swing/SwingFXUtilsTest.java line 
> 87:
> 
>> 86: testFromFXImg("opaque.gif");
>> 87: testFromFXImg("opaque.jpg");
>> 88: testFromFXImg("opaque.png");
> 
> You didn't fully revert your change to this file. The above needs to be 
> restored such that when you are done, this file is unchanged versus master, 
> and not part of the PR.
> 
> tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java 
> line 25:
> 
>> 24:  */
>> 25: package test.robot.javafx.embed.swing;
>> 26: 
> 
> Since you aren't using `Robot` I'll repeat my earlier recommendation to put 
> your new test in `test.javafx.embed.swing` (as a new test class) rather than 
> modifying this existing test class. This class isn't suitable anyway, since 
> it is only run on Mac.
> 
> tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java 
> line 40:
> 
>> 39: import javax.swing.*;
>> 40: import java.awt.*;
>> 41: import java.awt.event.InputEvent;
> 
> The use of wild card imports is discouraged (except for static imports).
> 
> tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java 
> line 129:
> 
>> 128: JPanel jpanel = new JPanel();
>> 129: jpanel.add(fxPnl);
>> 130: jframe.setContentPane(jpanel);
> 
> You didn't add an initial dummy `JFXPanel` so I suspect it will still not 
> catch the bug (meaning it will still pass even without your patch).
> 
> 
> 
> Changes requested by kcr (Lead).

1. I've restored the test. But the git history is now very chaotic. Especially 
the moves might cause problems. Do the commits get squashed after merging? 
Otherwise, it might make sense, to redo the changes on a fresh branch and 
create a new pull request.
2. The test works now on windows. : )

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Rev 03] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Florian Kirmaier
On Tue, 26 Nov 2019 09:24:01 GMT, Kevin Rushforth  wrote:

> On Tue, 26 Nov 2019 09:23:58 GMT, Florian Kirmaier  
> wrote:
> 
>> The pull request has been updated with a complete new set of changes 
>> (possibly due to a rebase).
>> 
>> 
>> 
>> Commits:
>>  - 44774dfb: JDK-8200224
>>  - d1309fb6: JDK-8200224
>>  - 53a66b8f: JDK-8200224
>>  - 0be3cb5b: JDK-8200224
>>  - 03b59288: Merge branch 'master' of https://github.com/openjdk/jfx into 
>> JDK-8200224
>>  - 5cd96a56: JDK-8200224
>>  - 85c87628: JDK-8200224
>>  - 314e423c: JDK-8200224
>>  - 725e5fef: JDK-8200224
>> 
>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.03
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>   Stats: 272 lines in 3 files changed: 147 ins; 120 del; 5 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
> 
> To follow-up on my previous comment here are the requested changes:
> 
> 1. Restore ` 
> tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java`, 
> which was removed by your last commit, so that it doesn't show up in the PR.
> 2. In the new test, add a dummy `JFXPanel` to the `JPanel` so that the test 
> `JFXPanel` is the second one added (see my inline comments). This will allow 
> the test to catch the error on Windows by failing without your fix.
> 3. A few other inline comments on the new test.
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 2:
> 
>> 1: /*
>> 2:  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
>> 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> 
> That should be `2019`
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 35:
> 
>> 34: 
>> 35: 
>> 36: import javax.swing.JFrame;
> 
> You only need one blank line here.
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 94:
> 
>> 93: 
>> 94: class TestFXPanel extends JFXPanel {
>> 95: protected void processMouseEventPublic(MouseEvent e) {
> 
> This class can be `static`
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 108:
> 
>> 107: 
>> 108: SwingUtilities.invokeLater(() -> {
>> 109: TestFXPanel fxPnl = new TestFXPanel();
> 
> Add the following here:
> JFXPanel dummyFXPanel = new JFXPanel();
> dummyFXPanel.setPreferredSize(new Dimension(100, 100));
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 112:
> 
>> 111: JFrame jframe = new JFrame();
>> 112: JPanel jpanel = new JPanel();
>> 113: jpanel.add(fxPnl);
> 
> Add the following here:
> jpanel.add(dummyFXPanel);
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 118:
> 
>> 117: 
>> 118: Platform.runLater(() -> {
>> 119: Group grp = new Group();
> 
> Add the following here:
> Scene dummyScene = new Scene(new Group());
> dummyFXPanel.setScene(dummyScene);
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 138:
> 
>> 137: 
>> 138: if(!firstPressedEventLatch.await(5000, TimeUnit.MILLISECONDS)) {
>> 139: throw new Exception();
> 
> This `if` test can be written more succinctly as:
> 
> assertTrue(firstPressedEventLatch.await(5000, TimeUnit.MILLISECONDS));
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 72:
> 
>> 71: @BeforeClass
>> 72: public static void doSetupOnce() {
>> 73: // Start the Application
> 
> If you add `throws Exception` then you don't need the try/catch around the 
> `launchLatch.await`.
> 
> tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 119:
> 
>> 118: Platform.runLater(() -> {
>> 119: Group grp = new Group();
>> 120: Scene scene = new Scene(new Group());
> 
> This variable is unused.
> 
> 
> 
> Changes requested by kcr (Lead).

The if is triggered, when the time runs out.

remvoed

done

done

It's now simplified.

done

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Kevin Rushforth
On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
 wrote:

> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
> 
> A side effect of JDK-8200224 is, that the first click on a JFXPanel is always 
> a double click.
> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
> JFXPanel ignored if another swing component has focus).
> This fix introduced synthesized press-events, which is an unsafe fix for the 
> problem.
> 
> The pull request introduces a new fix for the problem.
> Instead of simulating new input-events, we set JavaFX Scene/Window to focused.
> We do so, by using setFocused.
> When the original Swing-Focus event is called slightly later, it won't have 
> any side-effects,
> because calling setFocused just sets the value of a boolean property.
> 
> I've now also added a unit-test for the problem.
> 
> 
> 
> Commits:
>  - 314e423c: JDK-8200224
>  - 725e5fef: JDK-8200224
> 
> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

I left a couple additional comments about the test changes. Namely:

1. You didn't fully revert the changes to `SwingFXUtilsTest`
2. Your new test should be put in its own class in `test.javafx.embed.swing` 
(and not in the exist mac-only Robot test)

tests/system/src/test/java/test/javafx/embed/swing/SwingFXUtilsTest.java line 
87:

> 86: testFromFXImg("opaque.gif");
> 87: testFromFXImg("opaque.jpg");
> 88: testFromFXImg("opaque.png");

You didn't fully revert your change to this file. The above needs to be 
restored such that when you are done, this file is unchanged versus master, and 
not part of the PR.

tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java line 
25:

> 24:  */
> 25: package test.robot.javafx.embed.swing;
> 26: 

Since you aren't using `Robot` I'll repeat my earlier recommendation to put 
your new test in `test.javafx.embed.swing` (as a new test class) rather than 
modifying this existing test class. This class isn't suitable anyway, since it 
is only run on Mac.

tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java line 
40:

> 39: import javax.swing.*;
> 40: import java.awt.*;
> 41: import java.awt.event.InputEvent;

The use of wild card imports is discouraged (except for static imports).

tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java line 
129:

> 128: JPanel jpanel = new JPanel();
> 129: jpanel.add(fxPnl);
> 130: jframe.setContentPane(jpanel);

You didn't add an initial dummy `JFXPanel` so I suspect it will still not catch 
the bug (meaning it will still pass even without your patch).



Changes requested by kcr (Lead).

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Kevin Rushforth
On Tue, 26 Nov 2019 09:23:59 GMT, Florian Kirmaier  
wrote:

> On Wed, 13 Nov 2019 22:11:14 GMT, Kevin Rushforth  wrote:
> 
>> On Wed, 13 Nov 2019 01:17:44 GMT, Kevin Rushforth  wrote:
>> 
>>> On Tue, 12 Nov 2019 10:35:36 GMT, Florian Kirmaier  
>>> wrote:
>>> 
 On Wed, 6 Nov 2019 08:30:47 GMT, Kevin Rushforth  wrote:
 
> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>  wrote:
> 
>> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
>> 
>> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
>> always a double click.
>> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu 
>> in JFXPanel ignored if another swing component has focus).
>> This fix introduced synthesized press-events, which is an unsafe fix for 
>> the problem.
>> 
>> The pull request introduces a new fix for the problem.
>> Instead of simulating new input-events, we set JavaFX Scene/Window to 
>> focused.
>> We do so, by using setFocused.
>> When the original Swing-Focus event is called slightly later, it won't 
>> have any side-effects,
>> because calling setFocused just sets the value of a boolean property.
>> 
>> I've now also added a unit-test for the problem.
>> 
>> 
>> 
>> Commits:
>>  - 314e423c: JDK-8200224
>>  - 725e5fef: JDK-8200224
>> 
>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
> 
> modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 
> 457:
> 
>> 456: 
>> 457: sendMouseEventToFX(e);
>> 458: super.processMouseEvent(e);
> 
> typo: save --> safe
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 2:
> 
>> 1: /*
>> 2:  * Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights 
>> reserved.
>> 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> 
> replace `2014, 2016` with `2019,`
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 28:
> 
>> 27: 
>> 28: import javafx.application.Application;
>> 29: import javafx.application.Platform;
> 
> Remove unused import (several of the below imports are similarly unused). 
> Also, since this is a new test, please sort the imports.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 48:
> 
>> 47: 
>> 48: import static junit.framework.Assert.assertEquals;
>> 49: import static org.junit.Assert.assertNotNull;
> 
> This method should be imported from `org.junit` package.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 116:
> 
>> 115: MouseEvent e = new MouseEvent(fxPnl, 
>> MouseEvent.MOUSE_PRESSED, 0, MouseEvent.BUTTON1_DOWN_MASK,
>> 116: 5, 5, 1, false, MouseEvent.BUTTON1);
>> 117: 
> 
> This doesn't appear to trigger the bug -- at least on Windows. The test 
> passes for me with or without your fix. You might consider moving it to 
> the system tests project, under `tests/system/src/test/java/test/robot` 
> and using `Robot` to effect the mouse press.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 57:
> 
>> 56: 
>> 57: 
>> 58: @BeforeClass
> 
> You can remove the extra blank line.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 65:
> 
>> 64: 
>> 65: 
>> 66: try {
> 
> You can remove the extra blank line.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 79:
> 
>> 78: 
>> 79: class TestFXPanel extends JFXPanel {
>> 80: protected void processMouseEventPublic(MouseEvent e) {
> 
> I think this can be a static class.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 88:
> 
>> 87: 
>> 88: CountDownLatch firstPressedEventLatch = new 
>> CountDownLatch(1);
>> 89: 
> 
> This can be final.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>  line 91:
> 
>> 90: // It's an array, so we can mutate it inside of lambda 
>> statement
>> 91: int[] pressedEventCounter = {0};
>> 92: 
> 
>

Re: [Rev 03] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Kevin Rushforth
On Tue, 26 Nov 2019 09:23:58 GMT, Florian Kirmaier  
wrote:

> The pull request has been updated with a complete new set of changes 
> (possibly due to a rebase).
> 
> 
> 
> Commits:
>  - 44774dfb: JDK-8200224
>  - d1309fb6: JDK-8200224
>  - 53a66b8f: JDK-8200224
>  - 0be3cb5b: JDK-8200224
>  - 03b59288: Merge branch 'master' of https://github.com/openjdk/jfx into 
> JDK-8200224
>  - 5cd96a56: JDK-8200224
>  - 85c87628: JDK-8200224
>  - 314e423c: JDK-8200224
>  - 725e5fef: JDK-8200224
> 
> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.03
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 272 lines in 3 files changed: 147 ins; 120 del; 5 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

To follow-up on my previous comment here are the requested changes:

1. Restore ` 
tests/system/src/test/java/test/robot/javafx/embed/swing/JFXPanelTest.java`, 
which was removed by your last commit, so that it doesn't show up in the PR.
2. In the new test, add a dummy `JFXPanel` to the `JPanel` so that the test 
`JFXPanel` is the second one added (see my inline comments). This will allow 
the test to catch the error on Windows by failing without your fix.
3. A few other inline comments on the new test.

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 2:

> 1: /*
> 2:  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
> 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

That should be `2019`

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 35:

> 34: 
> 35: 
> 36: import javax.swing.JFrame;

You only need one blank line here.

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 94:

> 93: 
> 94: class TestFXPanel extends JFXPanel {
> 95: protected void processMouseEventPublic(MouseEvent e) {

This class can be `static`

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 108:

> 107: 
> 108: SwingUtilities.invokeLater(() -> {
> 109: TestFXPanel fxPnl = new TestFXPanel();

Add the following here:
JFXPanel dummyFXPanel = new JFXPanel();
dummyFXPanel.setPreferredSize(new Dimension(100, 100));

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 112:

> 111: JFrame jframe = new JFrame();
> 112: JPanel jpanel = new JPanel();
> 113: jpanel.add(fxPnl);

Add the following here:
jpanel.add(dummyFXPanel);

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 118:

> 117: 
> 118: Platform.runLater(() -> {
> 119: Group grp = new Group();

Add the following here:
Scene dummyScene = new Scene(new Group());
dummyFXPanel.setScene(dummyScene);

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 138:

> 137: 
> 138: if(!firstPressedEventLatch.await(5000, TimeUnit.MILLISECONDS)) {
> 139: throw new Exception();

This `if` test can be written more succinctly as:

assertTrue(firstPressedEventLatch.await(5000, TimeUnit.MILLISECONDS));

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 72:

> 71: @BeforeClass
> 72: public static void doSetupOnce() {
> 73: // Start the Application

If you add `throws Exception` then you don't need the try/catch around the 
`launchLatch.await`.

tests/system/src/test/java/test/javafx/embed/swing/JFXPanelTest.java line 119:

> 118: Platform.runLater(() -> {
> 119: Group grp = new Group();
> 120: Scene scene = new Scene(new Group());

This variable is unused.



Changes requested by kcr (Lead).

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Rev 02] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Florian Kirmaier
On Wed, 13 Nov 2019 21:53:13 GMT, Kevin Rushforth  wrote:

> On Tue, 12 Nov 2019 10:23:16 GMT, Florian Kirmaier  
> wrote:
> 
>> The pull request has been updated with additional changes.
>> 
>> 
>> 
>> Added commits:
>>  - 5cd96a56: JDK-8200224
>> 
>> Changes:
>>   - all: https://git.openjdk.java.net/jfx/pull/25/files
>>   - new: https://git.openjdk.java.net/jfx/pull/25/files/85c87628..5cd96a56
>> 
>> Webrevs:
>>  - full: https://webrevs.openjdk.java.net/jfx/25/webrev.02
>>  - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.01-02
>> 
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>   Stats: 5 lines in 1 file changed: 0 ins; 5 del; 0 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
> 
> I see that when you made your earlier comment regarding `System.exit`, you 
> really meant that the existing swing test was calling `Platform.exit`, which 
> isn't the same thing; it does shut down the JavaFX runtime, which is intended.
> 
> The problem you are running into is that gradle runs multiple tests in the 
> same VM and in an undefined, and unpredicable, order. This means that tests 
> need to take care not to alter or rely on global state such as threads, 
> static fields, global JavaFX state, and the running (or lack thereof) of the 
> JavaFX runtime. The swing tests violate this rule and are therefore 
> inherently unstable. The only reason this hasn't been a problem up to now is 
> that the javafx.swing module contains a single test class. I will file a new 
> test bug to address it -- probably by moving that test to the `systemTests` 
> project.
> 
> You will need to move your test into the `systemTests` project under the 
> `tests/system/` directory. Such tests are valid in the system tests project 
> because we run each test in that project in its own VM. Once your proposed 
> test is robust (meaning consistently catches the bug without your fix and 
> consistently passes with your fix) on all platforms without using Robot, then 
> `tests/system/src/test/java/test/javafx/embed/swing/` would be the best place 
> to put your new test.
> 
> Regarding the test itself, it still doesn't fail for me on Windows without 
> your fix. I ran the test program attached to the bug and I see something that 
> might help explain this. That test program creates a pair of JFXPanel objects 
> and adds both to the JPanel. If I first click on the first one, then it only 
> shows a single click. Every time after that, if I click on a new JFXPanel, 
> then I get 2 clicks. If, instead, I click on the second JFXPanel right after 
> starting the program, I get 2 clicks the first time. With that in mind, I 
> modified your test to add a dummy JFXPanel to the JPanel before the one you 
> are sending the mouse pressed event to, and then it then does what I expect: 
> it catches the bug without your fix and passes with your fix. That might help 
> you come up with a more robust test. I added some specific comments on the 
> test as well.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/SwingFXUtilsTest.java
>  line 46:
> 
>> 45: 
>> 46: 
>> 47: public class SwingFXUtilsTest {
> 
> Your proposed fix for this test class is not the right fix, and needs to be 
> reverted. It highlights an existing bug with the swing tests, which I will 
> address in general comments.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 100:
> 
>> 99: jpanel.add(fxPnl);
>> 100: jframe.setContentPane(jpanel);
>> 101: jframe.setVisible(true);
> 
> You should call `jframe.pack()` here.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 128:
> 
>> 127: 
>> 128: Thread.sleep(100); // there should be no pressed event after 
>> the initial one. Let's wait for 0.1s and check again.
>> 129: assertEquals(1, pressedEventCounter[0]);
> 
> I recommend using 500 msec so we don't risk missing a failing click on slower 
> systems.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 60:
> 
>> 59: public static void doSetupOnce() {
>> 60: if (setupIsDone) return;
>> 61: Platform.startup(() -> {
> 
> This is not needed if you revert the changes to the other test class.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 130:
> 
>> 129: assertEquals(1, pressedEventCounter[0]);
>> 130: }
>> 131: }
> 
> You will want to add a cleanup method, annotated with `@AfterClass` to call 
> `Platform.exit` and dispose of the JFrame.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 106:
> 
>> 105: Scene scene = new Scene(new Group());
>> 106: scene.getRoot().requestFocus();
>> 107: 
> 
> I don't think requesting focus is necessary (or desired).
> 
> -

Re: [Rev 03] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Florian Kirmaier
The pull request has been updated with a complete new set of changes (possibly 
due to a rebase).



Commits:
 - 44774dfb: JDK-8200224
 - d1309fb6: JDK-8200224
 - 53a66b8f: JDK-8200224
 - 0be3cb5b: JDK-8200224
 - 03b59288: Merge branch 'master' of https://github.com/openjdk/jfx into 
JDK-8200224
 - 5cd96a56: JDK-8200224
 - 85c87628: JDK-8200224
 - 314e423c: JDK-8200224
 - 725e5fef: JDK-8200224

Changes: https://git.openjdk.java.net/jfx/pull/25/files
 Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.03
  Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
  Stats: 272 lines in 3 files changed: 147 ins; 120 del; 5 mod
  Patch: https://git.openjdk.java.net/jfx/pull/25.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-26 Thread Florian Kirmaier
On Wed, 13 Nov 2019 22:11:14 GMT, Kevin Rushforth  wrote:

> On Wed, 13 Nov 2019 01:17:44 GMT, Kevin Rushforth  wrote:
> 
>> On Tue, 12 Nov 2019 10:35:36 GMT, Florian Kirmaier  
>> wrote:
>> 
>>> On Wed, 6 Nov 2019 08:30:47 GMT, Kevin Rushforth  wrote:
>>> 
 On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
  wrote:
 
> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
> 
> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
> always a double click.
> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
> JFXPanel ignored if another swing component has focus).
> This fix introduced synthesized press-events, which is an unsafe fix for 
> the problem.
> 
> The pull request introduces a new fix for the problem.
> Instead of simulating new input-events, we set JavaFX Scene/Window to 
> focused.
> We do so, by using setFocused.
> When the original Swing-Focus event is called slightly later, it won't 
> have any side-effects,
> because calling setFocused just sets the value of a boolean property.
> 
> I've now also added a unit-test for the problem.
> 
> 
> 
> Commits:
>  - 314e423c: JDK-8200224
>  - 725e5fef: JDK-8200224
> 
> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
 
 modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 
 457:
 
> 456: 
> 457: sendMouseEventToFX(e);
> 458: super.processMouseEvent(e);
 
 typo: save --> safe
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 2:
 
> 1: /*
> 2:  * Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights 
> reserved.
> 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 replace `2014, 2016` with `2019,`
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 28:
 
> 27: 
> 28: import javafx.application.Application;
> 29: import javafx.application.Platform;
 
 Remove unused import (several of the below imports are similarly unused). 
 Also, since this is a new test, please sort the imports.
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 48:
 
> 47: 
> 48: import static junit.framework.Assert.assertEquals;
> 49: import static org.junit.Assert.assertNotNull;
 
 This method should be imported from `org.junit` package.
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 116:
 
> 115: MouseEvent e = new MouseEvent(fxPnl, 
> MouseEvent.MOUSE_PRESSED, 0, MouseEvent.BUTTON1_DOWN_MASK,
> 116: 5, 5, 1, false, MouseEvent.BUTTON1);
> 117: 
 
 This doesn't appear to trigger the bug -- at least on Windows. The test 
 passes for me with or without your fix. You might consider moving it to 
 the system tests project, under `tests/system/src/test/java/test/robot` 
 and using `Robot` to effect the mouse press.
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 57:
 
> 56: 
> 57: 
> 58: @BeforeClass
 
 You can remove the extra blank line.
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 65:
 
> 64: 
> 65: 
> 66: try {
 
 You can remove the extra blank line.
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 79:
 
> 78: 
> 79: class TestFXPanel extends JFXPanel {
> 80: protected void processMouseEventPublic(MouseEvent e) {
 
 I think this can be a static class.
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 88:
 
> 87: 
> 88: CountDownLatch firstPressedEventLatch = new CountDownLatch(1);
> 89: 
 
 This can be final.
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 91:
 
> 90: // It's an array, so we can mutate it inside of lambda 
> statement
> 91: int[] pressedEventCounter = {0};
> 92: 
 
 This can be final.
 
 modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
  line 132:
 
> 131: 
> 132: 
> 133: }
 
 You can remove the extra blan

Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-13 Thread Kevin Rushforth
On Wed, 13 Nov 2019 01:17:44 GMT, Kevin Rushforth  wrote:

> On Tue, 12 Nov 2019 10:35:36 GMT, Florian Kirmaier  
> wrote:
> 
>> On Wed, 6 Nov 2019 08:30:47 GMT, Kevin Rushforth  wrote:
>> 
>>> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>>>  wrote:
>>> 
 Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
 
 A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
 always a double click.
 The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
 JFXPanel ignored if another swing component has focus).
 This fix introduced synthesized press-events, which is an unsafe fix for 
 the problem.
 
 The pull request introduces a new fix for the problem.
 Instead of simulating new input-events, we set JavaFX Scene/Window to 
 focused.
 We do so, by using setFocused.
 When the original Swing-Focus event is called slightly later, it won't 
 have any side-effects,
 because calling setFocused just sets the value of a boolean property.
 
 I've now also added a unit-test for the problem.
 
 
 
 Commits:
  - 314e423c: JDK-8200224
  - 725e5fef: JDK-8200224
 
 Changes: https://git.openjdk.java.net/jfx/pull/25/files
  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
>>> 
>>> modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 
>>> 457:
>>> 
 456: 
 457: sendMouseEventToFX(e);
 458: super.processMouseEvent(e);
>>> 
>>> typo: save --> safe
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 2:
>>> 
 1: /*
 2:  * Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights 
 reserved.
 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>>> 
>>> replace `2014, 2016` with `2019,`
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 28:
>>> 
 27: 
 28: import javafx.application.Application;
 29: import javafx.application.Platform;
>>> 
>>> Remove unused import (several of the below imports are similarly unused). 
>>> Also, since this is a new test, please sort the imports.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 48:
>>> 
 47: 
 48: import static junit.framework.Assert.assertEquals;
 49: import static org.junit.Assert.assertNotNull;
>>> 
>>> This method should be imported from `org.junit` package.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 116:
>>> 
 115: MouseEvent e = new MouseEvent(fxPnl, 
 MouseEvent.MOUSE_PRESSED, 0, MouseEvent.BUTTON1_DOWN_MASK,
 116: 5, 5, 1, false, MouseEvent.BUTTON1);
 117: 
>>> 
>>> This doesn't appear to trigger the bug -- at least on Windows. The test 
>>> passes for me with or without your fix. You might consider moving it to the 
>>> system tests project, under `tests/system/src/test/java/test/robot` and 
>>> using `Robot` to effect the mouse press.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 57:
>>> 
 56: 
 57: 
 58: @BeforeClass
>>> 
>>> You can remove the extra blank line.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 65:
>>> 
 64: 
 65: 
 66: try {
>>> 
>>> You can remove the extra blank line.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 79:
>>> 
 78: 
 79: class TestFXPanel extends JFXPanel {
 80: protected void processMouseEventPublic(MouseEvent e) {
>>> 
>>> I think this can be a static class.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 88:
>>> 
 87: 
 88: CountDownLatch firstPressedEventLatch = new CountDownLatch(1);
 89: 
>>> 
>>> This can be final.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 91:
>>> 
 90: // It's an array, so we can mutate it inside of lambda 
 statement
 91: int[] pressedEventCounter = {0};
 92: 
>>> 
>>> This can be final.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 132:
>>> 
 131: 
 132: 
 133: }
>>> 
>>> You can remove the extra blank line.
>>> 
>>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java
>>>  line 123:
>>> 
 122: 
 123: if(!firstPressedEventLatch.await(5000, 
 TimeUnit.MILLISECOND

Re: [Rev 02] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-13 Thread Kevin Rushforth
On Tue, 12 Nov 2019 10:23:16 GMT, Florian Kirmaier  
wrote:

> The pull request has been updated with additional changes.
> 
> 
> 
> Added commits:
>  - 5cd96a56: JDK-8200224
> 
> Changes:
>   - all: https://git.openjdk.java.net/jfx/pull/25/files
>   - new: https://git.openjdk.java.net/jfx/pull/25/files/85c87628..5cd96a56
> 
> Webrevs:
>  - full: https://webrevs.openjdk.java.net/jfx/25/webrev.02
>  - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.01-02
> 
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 5 lines in 1 file changed: 0 ins; 5 del; 0 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

I see that when you made your earlier comment regarding `System.exit`, you 
really meant that the existing swing test was calling `Platform.exit`, which 
isn't the same thing; it does shut down the JavaFX runtime, which is intended.

The problem you are running into is that gradle runs multiple tests in the same 
VM and in an undefined, and unpredicable, order. This means that tests need to 
take care not to alter or rely on global state such as threads, static fields, 
global JavaFX state, and the running (or lack thereof) of the JavaFX runtime. 
The swing tests violate this rule and are therefore inherently unstable. The 
only reason this hasn't been a problem up to now is that the javafx.swing 
module contains a single test class. I will file a new test bug to address it 
-- probably by moving that test to the `systemTests` project.

You will need to move your test into the `systemTests` project under the 
`tests/system/` directory. Such tests are valid in the system tests project 
because we run each test in that project in its own VM. Once your proposed test 
is robust (meaning consistently catches the bug without your fix and 
consistently passes with your fix) on all platforms without using Robot, then 
`tests/system/src/test/java/test/javafx/embed/swing/` would be the best place 
to put your new test.

Regarding the test itself, it still doesn't fail for me on Windows without your 
fix. I ran the test program attached to the bug and I see something that might 
help explain this. That test program creates a pair of JFXPanel objects and 
adds both to the JPanel. If I first click on the first one, then it only shows 
a single click. Every time after that, if I click on a new JFXPanel, then I get 
2 clicks. If, instead, I click on the second JFXPanel right after starting the 
program, I get 2 clicks the first time. With that in mind, I modified your test 
to add a dummy JFXPanel to the JPanel before the one you are sending the mouse 
pressed event to, and then it then does what I expect: it catches the bug 
without your fix and passes with your fix. That might help you come up with a 
more robust test. I added some specific comments on the test as well.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/SwingFXUtilsTest.java
 line 46:

> 45: 
> 46: 
> 47: public class SwingFXUtilsTest {

Your proposed fix for this test class is not the right fix, and needs to be 
reverted. It highlights an existing bug with the swing tests, which I will 
address in general comments.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 100:

> 99: jpanel.add(fxPnl);
> 100: jframe.setContentPane(jpanel);
> 101: jframe.setVisible(true);

You should call `jframe.pack()` here.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 128:

> 127: 
> 128: Thread.sleep(100); // there should be no pressed event after the 
> initial one. Let's wait for 0.1s and check again.
> 129: assertEquals(1, pressedEventCounter[0]);

I recommend using 500 msec so we don't risk missing a failing click on slower 
systems.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 60:

> 59: public static void doSetupOnce() {
> 60: if (setupIsDone) return;
> 61: Platform.startup(() -> {

This is not needed if you revert the changes to the other test class.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 130:

> 129: assertEquals(1, pressedEventCounter[0]);
> 130: }
> 131: }

You will want to add a cleanup method, annotated with `@AfterClass` to call 
`Platform.exit` and dispose of the JFrame.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 106:

> 105: Scene scene = new Scene(new Group());
> 106: scene.getRoot().requestFocus();
> 107: 

I don't think requesting focus is necessary (or desired).



Changes requested by kcr (Lead).

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-12 Thread Kevin Rushforth
On Tue, 12 Nov 2019 10:35:36 GMT, Florian Kirmaier  
wrote:

> On Wed, 6 Nov 2019 08:30:47 GMT, Kevin Rushforth  wrote:
> 
>> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>>  wrote:
>> 
>>> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
>>> 
>>> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
>>> always a double click.
>>> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
>>> JFXPanel ignored if another swing component has focus).
>>> This fix introduced synthesized press-events, which is an unsafe fix for 
>>> the problem.
>>> 
>>> The pull request introduces a new fix for the problem.
>>> Instead of simulating new input-events, we set JavaFX Scene/Window to 
>>> focused.
>>> We do so, by using setFocused.
>>> When the original Swing-Focus event is called slightly later, it won't have 
>>> any side-effects,
>>> because calling setFocused just sets the value of a boolean property.
>>> 
>>> I've now also added a unit-test for the problem.
>>> 
>>> 
>>> 
>>> Commits:
>>>  - 314e423c: JDK-8200224
>>>  - 725e5fef: JDK-8200224
>>> 
>>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
>> 
>> modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 457:
>> 
>>> 456: 
>>> 457: sendMouseEventToFX(e);
>>> 458: super.processMouseEvent(e);
>> 
>> typo: save --> safe
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 2:
>> 
>>> 1: /*
>>> 2:  * Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights 
>>> reserved.
>>> 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>> 
>> replace `2014, 2016` with `2019,`
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 28:
>> 
>>> 27: 
>>> 28: import javafx.application.Application;
>>> 29: import javafx.application.Platform;
>> 
>> Remove unused import (several of the below imports are similarly unused). 
>> Also, since this is a new test, please sort the imports.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 48:
>> 
>>> 47: 
>>> 48: import static junit.framework.Assert.assertEquals;
>>> 49: import static org.junit.Assert.assertNotNull;
>> 
>> This method should be imported from `org.junit` package.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 116:
>> 
>>> 115: MouseEvent e = new MouseEvent(fxPnl, 
>>> MouseEvent.MOUSE_PRESSED, 0, MouseEvent.BUTTON1_DOWN_MASK,
>>> 116: 5, 5, 1, false, MouseEvent.BUTTON1);
>>> 117: 
>> 
>> This doesn't appear to trigger the bug -- at least on Windows. The test 
>> passes for me with or without your fix. You might consider moving it to the 
>> system tests project, under `tests/system/src/test/java/test/robot` and 
>> using `Robot` to effect the mouse press.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 57:
>> 
>>> 56: 
>>> 57: 
>>> 58: @BeforeClass
>> 
>> You can remove the extra blank line.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 65:
>> 
>>> 64: 
>>> 65: 
>>> 66: try {
>> 
>> You can remove the extra blank line.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 79:
>> 
>>> 78: 
>>> 79: class TestFXPanel extends JFXPanel {
>>> 80: protected void processMouseEventPublic(MouseEvent e) {
>> 
>> I think this can be a static class.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 88:
>> 
>>> 87: 
>>> 88: CountDownLatch firstPressedEventLatch = new CountDownLatch(1);
>>> 89: 
>> 
>> This can be final.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 91:
>> 
>>> 90: // It's an array, so we can mutate it inside of lambda statement
>>> 91: int[] pressedEventCounter = {0};
>>> 92: 
>> 
>> This can be final.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 132:
>> 
>>> 131: 
>>> 132: 
>>> 133: }
>> 
>> You can remove the extra blank line.
>> 
>> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
>> line 123:
>> 
>>> 122: 
>>> 123: if(!firstPressedEventLatch.await(5000, TimeUnit.MILLISECONDS)) 
>>> {
>>> 124: throw new Exception();
>> 
>> Add a space after the `if`.
>> 
>> The fix seems fine. Have you tested it on all three platforms?
>> 
>> I have several comments on the test.
>> 
>> 

Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-12 Thread Florian Kirmaier
On Wed, 6 Nov 2019 08:30:47 GMT, Kevin Rushforth  wrote:

> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>  wrote:
> 
>> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
>> 
>> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
>> always a double click.
>> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
>> JFXPanel ignored if another swing component has focus).
>> This fix introduced synthesized press-events, which is an unsafe fix for the 
>> problem.
>> 
>> The pull request introduces a new fix for the problem.
>> Instead of simulating new input-events, we set JavaFX Scene/Window to 
>> focused.
>> We do so, by using setFocused.
>> When the original Swing-Focus event is called slightly later, it won't have 
>> any side-effects,
>> because calling setFocused just sets the value of a boolean property.
>> 
>> I've now also added a unit-test for the problem.
>> 
>> 
>> 
>> Commits:
>>  - 314e423c: JDK-8200224
>>  - 725e5fef: JDK-8200224
>> 
>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
> 
> modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 457:
> 
>> 456: 
>> 457: sendMouseEventToFX(e);
>> 458: super.processMouseEvent(e);
> 
> typo: save --> safe
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 2:
> 
>> 1: /*
>> 2:  * Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights 
>> reserved.
>> 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> 
> replace `2014, 2016` with `2019,`
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 28:
> 
>> 27: 
>> 28: import javafx.application.Application;
>> 29: import javafx.application.Platform;
> 
> Remove unused import (several of the below imports are similarly unused). 
> Also, since this is a new test, please sort the imports.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 48:
> 
>> 47: 
>> 48: import static junit.framework.Assert.assertEquals;
>> 49: import static org.junit.Assert.assertNotNull;
> 
> This method should be imported from `org.junit` package.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 116:
> 
>> 115: MouseEvent e = new MouseEvent(fxPnl, 
>> MouseEvent.MOUSE_PRESSED, 0, MouseEvent.BUTTON1_DOWN_MASK,
>> 116: 5, 5, 1, false, MouseEvent.BUTTON1);
>> 117: 
> 
> This doesn't appear to trigger the bug -- at least on Windows. The test 
> passes for me with or without your fix. You might consider moving it to the 
> system tests project, under `tests/system/src/test/java/test/robot` and using 
> `Robot` to effect the mouse press.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 57:
> 
>> 56: 
>> 57: 
>> 58: @BeforeClass
> 
> You can remove the extra blank line.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 65:
> 
>> 64: 
>> 65: 
>> 66: try {
> 
> You can remove the extra blank line.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 79:
> 
>> 78: 
>> 79: class TestFXPanel extends JFXPanel {
>> 80: protected void processMouseEventPublic(MouseEvent e) {
> 
> I think this can be a static class.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 88:
> 
>> 87: 
>> 88: CountDownLatch firstPressedEventLatch = new CountDownLatch(1);
>> 89: 
> 
> This can be final.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 91:
> 
>> 90: // It's an array, so we can mutate it inside of lambda statement
>> 91: int[] pressedEventCounter = {0};
>> 92: 
> 
> This can be final.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 132:
> 
>> 131: 
>> 132: 
>> 133: }
> 
> You can remove the extra blank line.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 123:
> 
>> 122: 
>> 123: if(!firstPressedEventLatch.await(5000, TimeUnit.MILLISECONDS)) {
>> 124: throw new Exception();
> 
> Add a space after the `if`.
> 
> The fix seems fine. Have you tested it on all three platforms?
> 
> I have several comments on the test.
> 
> 
> 
> Disapproved by kcr (Lead).

Maybe try `./gradlew -PFULL_TEST=true swing:clean swing:test`.
I'm sure, it can be reproduced on windows.
If you still can not reproduce it, then I will add a test for the Robot.

PR: https:

Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-12 Thread Florian Kirmaier
On Wed, 6 Nov 2019 08:30:47 GMT, Kevin Rushforth  wrote:

> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>  wrote:
> 
>> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
>> 
>> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
>> always a double click.
>> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
>> JFXPanel ignored if another swing component has focus).
>> This fix introduced synthesized press-events, which is an unsafe fix for the 
>> problem.
>> 
>> The pull request introduces a new fix for the problem.
>> Instead of simulating new input-events, we set JavaFX Scene/Window to 
>> focused.
>> We do so, by using setFocused.
>> When the original Swing-Focus event is called slightly later, it won't have 
>> any side-effects,
>> because calling setFocused just sets the value of a boolean property.
>> 
>> I've now also added a unit-test for the problem.
>> 
>> 
>> 
>> Commits:
>>  - 314e423c: JDK-8200224
>>  - 725e5fef: JDK-8200224
>> 
>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
> 
> modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 457:
> 
>> 456: 
>> 457: sendMouseEventToFX(e);
>> 458: super.processMouseEvent(e);
> 
> typo: save --> safe
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 2:
> 
>> 1: /*
>> 2:  * Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights 
>> reserved.
>> 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> 
> replace `2014, 2016` with `2019,`
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 28:
> 
>> 27: 
>> 28: import javafx.application.Application;
>> 29: import javafx.application.Platform;
> 
> Remove unused import (several of the below imports are similarly unused). 
> Also, since this is a new test, please sort the imports.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 48:
> 
>> 47: 
>> 48: import static junit.framework.Assert.assertEquals;
>> 49: import static org.junit.Assert.assertNotNull;
> 
> This method should be imported from `org.junit` package.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 116:
> 
>> 115: MouseEvent e = new MouseEvent(fxPnl, 
>> MouseEvent.MOUSE_PRESSED, 0, MouseEvent.BUTTON1_DOWN_MASK,
>> 116: 5, 5, 1, false, MouseEvent.BUTTON1);
>> 117: 
> 
> This doesn't appear to trigger the bug -- at least on Windows. The test 
> passes for me with or without your fix. You might consider moving it to the 
> system tests project, under `tests/system/src/test/java/test/robot` and using 
> `Robot` to effect the mouse press.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 57:
> 
>> 56: 
>> 57: 
>> 58: @BeforeClass
> 
> You can remove the extra blank line.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 65:
> 
>> 64: 
>> 65: 
>> 66: try {
> 
> You can remove the extra blank line.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 79:
> 
>> 78: 
>> 79: class TestFXPanel extends JFXPanel {
>> 80: protected void processMouseEventPublic(MouseEvent e) {
> 
> I think this can be a static class.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 88:
> 
>> 87: 
>> 88: CountDownLatch firstPressedEventLatch = new CountDownLatch(1);
>> 89: 
> 
> This can be final.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 91:
> 
>> 90: // It's an array, so we can mutate it inside of lambda statement
>> 91: int[] pressedEventCounter = {0};
>> 92: 
> 
> This can be final.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 132:
> 
>> 131: 
>> 132: 
>> 133: }
> 
> You can remove the extra blank line.
> 
> modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
> line 123:
> 
>> 122: 
>> 123: if(!firstPressedEventLatch.await(5000, TimeUnit.MILLISECONDS)) {
>> 124: throw new Exception();
> 
> Add a space after the `if`.
> 
> The fix seems fine. Have you tested it on all three platforms?
> 
> I have several comments on the test.
> 
> 
> 
> Disapproved by kcr (Lead).

You can run the AWT_TESTS with the following statement:
./gradlew -PFULL_TEST=true swing:clean swing:test
For some reason, it's hidden behind this flag.
Maybe that's the reason, why you coul

Re: [Rev 02] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-12 Thread Florian Kirmaier
The pull request has been updated with additional changes.



Added commits:
 - 5cd96a56: JDK-8200224

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/25/files
  - new: https://git.openjdk.java.net/jfx/pull/25/files/85c87628..5cd96a56

Webrevs:
 - full: https://webrevs.openjdk.java.net/jfx/25/webrev.02
 - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.01-02

  Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
  Stats: 5 lines in 1 file changed: 0 ins; 5 del; 0 mod
  Patch: https://git.openjdk.java.net/jfx/pull/25.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

PR: https://git.openjdk.java.net/jfx/pull/25


Re: [Rev 01] RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-12 Thread Florian Kirmaier
The pull request has been updated with additional changes.



Added commits:
 - 85c87628: JDK-8200224

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/25/files
  - new: https://git.openjdk.java.net/jfx/pull/25/files/314e423c..85c87628

Webrevs:
 - full: https://webrevs.openjdk.java.net/jfx/25/webrev.01
 - incr: https://webrevs.openjdk.java.net/jfx/25/webrev.00-01

  Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
  Stats: 52 lines in 3 files changed: 8 ins; 34 del; 10 mod
  Patch: https://git.openjdk.java.net/jfx/pull/25.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-11-06 Thread Kevin Rushforth
On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
 wrote:

> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
> 
> A side effect of JDK-8200224 is, that the first click on a JFXPanel is always 
> a double click.
> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
> JFXPanel ignored if another swing component has focus).
> This fix introduced synthesized press-events, which is an unsafe fix for the 
> problem.
> 
> The pull request introduces a new fix for the problem.
> Instead of simulating new input-events, we set JavaFX Scene/Window to focused.
> We do so, by using setFocused.
> When the original Swing-Focus event is called slightly later, it won't have 
> any side-effects,
> because calling setFocused just sets the value of a boolean property.
> 
> I've now also added a unit-test for the problem.
> 
> 
> 
> Commits:
>  - 314e423c: JDK-8200224
>  - 725e5fef: JDK-8200224
> 
> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 457:

> 456: 
> 457: sendMouseEventToFX(e);
> 458: super.processMouseEvent(e);

typo: save --> safe

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 2:

> 1: /*
> 2:  * Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights 
> reserved.
> 3:  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

replace `2014, 2016` with `2019,`

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 28:

> 27: 
> 28: import javafx.application.Application;
> 29: import javafx.application.Platform;

Remove unused import (several of the below imports are similarly unused). Also, 
since this is a new test, please sort the imports.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 48:

> 47: 
> 48: import static junit.framework.Assert.assertEquals;
> 49: import static org.junit.Assert.assertNotNull;

This method should be imported from `org.junit` package.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 116:

> 115: MouseEvent e = new MouseEvent(fxPnl, 
> MouseEvent.MOUSE_PRESSED, 0, MouseEvent.BUTTON1_DOWN_MASK,
> 116: 5, 5, 1, false, MouseEvent.BUTTON1);
> 117: 

This doesn't appear to trigger the bug -- at least on Windows. The test passes 
for me with or without your fix. You might consider moving it to the system 
tests project, under `tests/system/src/test/java/test/robot` and using `Robot` 
to effect the mouse press.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 57:

> 56: 
> 57: 
> 58: @BeforeClass

You can remove the extra blank line.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 65:

> 64: 
> 65: 
> 66: try {

You can remove the extra blank line.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 79:

> 78: 
> 79: class TestFXPanel extends JFXPanel {
> 80: protected void processMouseEventPublic(MouseEvent e) {

I think this can be a static class.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 88:

> 87: 
> 88: CountDownLatch firstPressedEventLatch = new CountDownLatch(1);
> 89: 

This can be final.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 91:

> 90: // It's an array, so we can mutate it inside of lambda statement
> 91: int[] pressedEventCounter = {0};
> 92: 

This can be final.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 132:

> 131: 
> 132: 
> 133: }

You can remove the extra blank line.

modules/javafx.swing/src/test/java/test/javafx/embed/swing/JFXPanelTest.java 
line 123:

> 122: 
> 123: if(!firstPressedEventLatch.await(5000, TimeUnit.MILLISECONDS)) {
> 124: throw new Exception();

Add a space after the `if`.

The fix seems fine. Have you tested it on all three platforms?

I have several comments on the test.



Disapproved by kcr (Lead).

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-10-29 Thread Florian Kirmaier
On Tue, 29 Oct 2019 15:59:58 GMT, Kevin Rushforth  wrote:

> On Tue, 29 Oct 2019 15:48:46 GMT, Florian Kirmaier 
>  wrote:
> 
>> On Tue, 29 Oct 2019 14:47:19 GMT, Kevin Rushforth  wrote:
>> 
>>> On Tue, 29 Oct 2019 14:45:46 GMT, Kevin Rushforth  wrote:
>>> 
 On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
  wrote:
 
> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
> 
> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
> always a double click.
> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
> JFXPanel ignored if another swing component has focus).
> This fix introduced synthesized press-events, which is an unsafe fix for 
> the problem.
> 
> The pull request introduces a new fix for the problem.
> Instead of simulating new input-events, we set JavaFX Scene/Window to 
> focused.
> We do so, by using setFocused.
> When the original Swing-Focus event is called slightly later, it won't 
> have any side-effects,
> because calling setFocused just sets the value of a boolean property.
> 
> I've now also added a unit-test for the problem.
> 
> 
> 
> Commits:
>  - 314e423c: JDK-8200224
>  - 725e5fef: JDK-8200224
> 
> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
 
 @FlorianKirmaier you still need to file a JBS issue to associate your 
 GitHub username with your OpenJDK user ID as noted 
 [above](#issuecomment-546883472), and per the instructions in [this 
 message](https://mail.openjdk.java.net/pipermail/openjfx-dev/2019-September/023558.html)
  sent to openjfx-dev.
>>> 
>>> @prsadhuk please review this. I will also review it (this will need two 
>>> reviewers).
>> 
>> @kevinrushforth 
>> If created the ticket a moment ago. 
>> https://bugs.openjdk.java.net/browse/JDK-8233121
>> Is this okay, or is any information missing?
> 
>> https://bugs.openjdk.java.net/browse/JDK-8233121
> 
> It was created in the JDK Project rather than the SKARA project (odd...the 
> link should have filled in the right project and component). I fixed it.

Great, thanks.

Some more notes on the importance of this Change.
A project which uses a lot of JFXPanels for small components was basically 
unusable because the majority of clicks were registered as a double click. This 
made the software basically unusable with JavaFX11.

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-10-29 Thread Kevin Rushforth
On Tue, 29 Oct 2019 15:48:46 GMT, Florian Kirmaier 
 wrote:

> On Tue, 29 Oct 2019 14:47:19 GMT, Kevin Rushforth  wrote:
> 
>> On Tue, 29 Oct 2019 14:45:46 GMT, Kevin Rushforth  wrote:
>> 
>>> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>>>  wrote:
>>> 
 Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
 
 A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
 always a double click.
 The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
 JFXPanel ignored if another swing component has focus).
 This fix introduced synthesized press-events, which is an unsafe fix for 
 the problem.
 
 The pull request introduces a new fix for the problem.
 Instead of simulating new input-events, we set JavaFX Scene/Window to 
 focused.
 We do so, by using setFocused.
 When the original Swing-Focus event is called slightly later, it won't 
 have any side-effects,
 because calling setFocused just sets the value of a boolean property.
 
 I've now also added a unit-test for the problem.
 
 
 
 Commits:
  - 314e423c: JDK-8200224
  - 725e5fef: JDK-8200224
 
 Changes: https://git.openjdk.java.net/jfx/pull/25/files
  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
>>> 
>>> @FlorianKirmaier you still need to file a JBS issue to associate your 
>>> GitHub username with your OpenJDK user ID as noted 
>>> [above](#issuecomment-546883472), and per the instructions in [this 
>>> message](https://mail.openjdk.java.net/pipermail/openjfx-dev/2019-September/023558.html)
>>>  sent to openjfx-dev.
>> 
>> @prsadhuk please review this. I will also review it (this will need two 
>> reviewers).
> 
> @kevinrushforth 
> If created the ticket a moment ago. 
> https://bugs.openjdk.java.net/browse/JDK-8233121
> Is this okay, or is any information missing?

> https://bugs.openjdk.java.net/browse/JDK-8233121

It was created in the JDK Project rather than the SKARA project (odd...the link 
should have filled in the right project and component). I fixed it.

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-10-29 Thread Florian Kirmaier
On Tue, 29 Oct 2019 14:47:19 GMT, Kevin Rushforth  wrote:

> On Tue, 29 Oct 2019 14:45:46 GMT, Kevin Rushforth  wrote:
> 
>> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>>  wrote:
>> 
>>> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
>>> 
>>> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
>>> always a double click.
>>> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
>>> JFXPanel ignored if another swing component has focus).
>>> This fix introduced synthesized press-events, which is an unsafe fix for 
>>> the problem.
>>> 
>>> The pull request introduces a new fix for the problem.
>>> Instead of simulating new input-events, we set JavaFX Scene/Window to 
>>> focused.
>>> We do so, by using setFocused.
>>> When the original Swing-Focus event is called slightly later, it won't have 
>>> any side-effects,
>>> because calling setFocused just sets the value of a boolean property.
>>> 
>>> I've now also added a unit-test for the problem.
>>> 
>>> 
>>> 
>>> Commits:
>>>  - 314e423c: JDK-8200224
>>>  - 725e5fef: JDK-8200224
>>> 
>>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
>> 
>> @FlorianKirmaier you still need to file a JBS issue to associate your GitHub 
>> username with your OpenJDK user ID as noted 
>> [above](#issuecomment-546883472), and per the instructions in [this 
>> message](https://mail.openjdk.java.net/pipermail/openjfx-dev/2019-September/023558.html)
>>  sent to openjfx-dev.
> 
> @prsadhuk please review this. I will also review it (this will need two 
> reviewers).

@kevinrushforth 
If created the ticket a moment ago. 
https://bugs.openjdk.java.net/browse/JDK-8233121
Is this okay, or is any information missing?

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-10-29 Thread Kevin Rushforth
On Tue, 29 Oct 2019 14:45:46 GMT, Kevin Rushforth  wrote:

> On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
>  wrote:
> 
>> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
>> 
>> A side effect of JDK-8200224 is, that the first click on a JFXPanel is 
>> always a double click.
>> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
>> JFXPanel ignored if another swing component has focus).
>> This fix introduced synthesized press-events, which is an unsafe fix for the 
>> problem.
>> 
>> The pull request introduces a new fix for the problem.
>> Instead of simulating new input-events, we set JavaFX Scene/Window to 
>> focused.
>> We do so, by using setFocused.
>> When the original Swing-Focus event is called slightly later, it won't have 
>> any side-effects,
>> because calling setFocused just sets the value of a boolean property.
>> 
>> I've now also added a unit-test for the problem.
>> 
>> 
>> 
>> Commits:
>>  - 314e423c: JDK-8200224
>>  - 725e5fef: JDK-8200224
>> 
>> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25
> 
> @FlorianKirmaier you still need to file a JBS issue to associate your GitHub 
> username with your OpenJDK user ID as noted [above](#issuecomment-546883472), 
> and per the instructions in [this 
> message](https://mail.openjdk.java.net/pipermail/openjfx-dev/2019-September/023558.html)
>  sent to openjfx-dev.

@prsadhuk please review this. I will also review it (this will need two 
reviewers).

PR: https://git.openjdk.java.net/jfx/pull/25


Re: RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-10-29 Thread Kevin Rushforth
On Tue, 29 Oct 2019 11:27:35 GMT, Florian Kirmaier 
 wrote:

> Original PR: https://github.com/javafxports/openjdk-jfx/pull/591
> 
> A side effect of JDK-8200224 is, that the first click on a JFXPanel is always 
> a double click.
> The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
> JFXPanel ignored if another swing component has focus).
> This fix introduced synthesized press-events, which is an unsafe fix for the 
> problem.
> 
> The pull request introduces a new fix for the problem.
> Instead of simulating new input-events, we set JavaFX Scene/Window to focused.
> We do so, by using setFocused.
> When the original Swing-Focus event is called slightly later, it won't have 
> any side-effects,
> because calling setFocused just sets the value of a boolean property.
> 
> I've now also added a unit-test for the problem.
> 
> 
> 
> Commits:
>  - 314e423c: JDK-8200224
>  - 725e5fef: JDK-8200224
> 
> Changes: https://git.openjdk.java.net/jfx/pull/25/files
>  Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
>   Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
>   Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
>   Patch: https://git.openjdk.java.net/jfx/pull/25.diff
>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

@FlorianKirmaier you still need to file a JBS issue to associate your GitHub 
username with your OpenJDK user ID as noted [above](#issuecomment-546883472), 
and per the instructions in [this 
message](https://mail.openjdk.java.net/pipermail/openjfx-dev/2019-September/023558.html)
 sent to openjfx-dev.

PR: https://git.openjdk.java.net/jfx/pull/25


RFR: 8200224: Multiple press event when JFXPanel gains focus

2019-10-29 Thread Florian Kirmaier
Original PR: https://github.com/javafxports/openjdk-jfx/pull/591

A side effect of JDK-8200224 is, that the first click on a JFXPanel is always a 
double click.
The cause for JDK-8200224 is the fix for JDK-8087914 (Clicking on Menu in 
JFXPanel ignored if another swing component has focus).
This fix introduced synthesized press-events, which is an unsafe fix for the 
problem.

The pull request introduces a new fix for the problem.
Instead of simulating new input-events, we set JavaFX Scene/Window to focused.
We do so, by using setFocused.
When the original Swing-Focus event is called slightly later, it won't have any 
side-effects,
because calling setFocused just sets the value of a boolean property.

I've now also added a unit-test for the problem.



Commits:
 - 314e423c: JDK-8200224
 - 725e5fef: JDK-8200224

Changes: https://git.openjdk.java.net/jfx/pull/25/files
 Webrev: https://webrevs.openjdk.java.net/jfx/25/webrev.00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8200224
  Stats: 140 lines in 2 files changed: 133 ins; 2 del; 5 mod
  Patch: https://git.openjdk.java.net/jfx/pull/25.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/25/head:pull/25

PR: https://git.openjdk.java.net/jfx/pull/25