RFR: 8272808: Update constant collections to use the new immutable collections - leftovers

2021-09-22 Thread Nir Lisker
Replacements of more immutable collections.

One thing I found was that the field `idMap` in 
`com.sun.java.scene.web.WebViewHelper.WebView` seems unused. I can remove it if 
that's indeed the case.

-

Commit messages:
 - Fix a previous change
 - More leftovers
 - Unified style
 - Fix mistake from previous commit
 - Replace map in JSCL
 - Initial commit of 2 files

Changes: https://git.openjdk.java.net/jfx/pull/627/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx=627=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8272808
  Stats: 162 lines in 7 files changed: 0 ins; 28 del; 134 mod
  Patch: https://git.openjdk.java.net/jfx/pull/627.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/627/head:pull/627

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


[jfx17u] Integrated: 8269374: Menu inoperable after setting stage to second monitor

2021-09-22 Thread Johan Vos
On Wed, 22 Sep 2021 19:25:41 GMT, Johan Vos  wrote:

> Clean backport of JDK-8269374 (already in 11.0.13)
> 
> Reviewed-by: kcr, arapte

This pull request has now been integrated.

Changeset: 483e53b4
Author:Johan Vos 
URL:   
https://git.openjdk.java.net/jfx17u/commit/483e53b4763b384532f748a71a282c07ca133208
Stats: 9 lines in 1 file changed: 9 ins; 0 del; 0 mod

8269374: Menu inoperable after setting stage to second monitor

Backport-of: c490ddfdb1255add00dd7b0f14fe03857c6946c5

-

PR: https://git.openjdk.java.net/jfx17u/pull/12


[jfx17u] Integrated: 8273754: Re-introduce Automatic-Module-Name in empty jars

2021-09-22 Thread Johan Vos
On Wed, 22 Sep 2021 19:21:27 GMT, Johan Vos  wrote:

> Clean backport of JDK-8273754 which also appears in hotfix build 17.0.0.1
> 
> Reviewed-by: kcr, jvos

This pull request has now been integrated.

Changeset: 9bd87081
Author:Johan Vos 
URL:   
https://git.openjdk.java.net/jfx17u/commit/9bd87081be18e787d7fec41d9cb5c6db7544c932
Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 mod

8273754: Re-introduce Automatic-Module-Name in empty jars

Backport-of: 7329279e504070355ba9aa0517f0279e7e72c2cf

-

PR: https://git.openjdk.java.net/jfx17u/pull/11


[jfx17u] RFR: 8269374: Menu inoperable after setting stage to second monitor

2021-09-22 Thread Johan Vos
Clean backport of JDK-8269374 (already in 11.0.13)

Reviewed-by: kcr, arapte

-

Commit messages:
 - 8269374: Menu inoperable after setting stage to second monitor

Changes: https://git.openjdk.java.net/jfx17u/pull/12/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx17u=12=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8269374
  Stats: 9 lines in 1 file changed: 9 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jfx17u/pull/12.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx17u pull/12/head:pull/12

PR: https://git.openjdk.java.net/jfx17u/pull/12


[jfx17u] RFR: 8273754: Re-introduce Automatic-Module-Name in empty jars

2021-09-22 Thread Johan Vos
Clean backport of JDK-8273754 which also appears in hotfix build 17.0.0.1

Reviewed-by: kcr, jvos

-

Commit messages:
 - 8273754: Re-introduce Automatic-Module-Name in empty jars

Changes: https://git.openjdk.java.net/jfx17u/pull/11/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx17u=11=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8273754
  Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jfx17u/pull/11.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx17u pull/11/head:pull/11

PR: https://git.openjdk.java.net/jfx17u/pull/11


Re: RFR: 8264591: HBox/VBox child widths pixel-snap to wrong value

2021-09-22 Thread Marius Hanl
On Mon, 29 Mar 2021 19:57:17 GMT, Michael Strauß  wrote:

> The children of HBox/VBox don't always pixel-snap to the same value as the 
> container itself when a render scale other than 1 is used. This can lead to a 
> visual glitch where the content bounds don't line up with the container 
> bounds. In this case, the container will extend beyond its content, or vice 
> versa.
> 
> The following program shows the problem for HBox:
> 
> Region r1 = new Region();
> Region r2 = new Region();
> Region r3 = new Region();
> Region r4 = new Region();
> Region r5 = new Region();
> Region r6 = new Region();
> r1.setBackground(new Background(new BackgroundFill(Color.GREY, null, null)));
> r2.setBackground(new Background(new BackgroundFill(Color.DARKGRAY, null, 
> null)));
> r3.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
> r4.setBackground(new Background(new BackgroundFill(Color.GREY, null, null)));
> r5.setBackground(new Background(new BackgroundFill(Color.DARKGRAY, null, 
> null)));
> r6.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
> r1.setPrefWidth(25.3);
> r2.setPrefWidth(25.3);
> r3.setPrefWidth(25.4);
> r4.setPrefWidth(25.3);
> r5.setPrefWidth(25.3);
> r6.setPrefWidth(25.4);
> r1.setMaxHeight(30);
> r2.setMaxHeight(30);
> r3.setMaxHeight(30);
> r4.setMaxHeight(30);
> r5.setMaxHeight(30);
> r6.setMaxHeight(30);
> HBox hbox1 = new HBox(r1, r2, r3, r4, r5, r6);
> hbox1.setBackground(new Background(new BackgroundFill(Color.RED, null, 
> null)));
> hbox1.setPrefHeight(40);
> 
> r1 = new Region();
> r2 = new Region();
> r3 = new Region();
> r4 = new Region();
> r5 = new Region();
> r6 = new Region();
> r1.setBackground(new Background(new BackgroundFill(Color.GREY, null, null)));
> r2.setBackground(new Background(new BackgroundFill(Color.DARKGRAY, null, 
> null)));
> r3.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
> r4.setBackground(new Background(new BackgroundFill(Color.GREY, null, null)));
> r5.setBackground(new Background(new BackgroundFill(Color.DARKGRAY, null, 
> null)));
> r6.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
> r1.setPrefWidth(25.3);
> r2.setPrefWidth(25.3);
> r3.setPrefWidth(25.4);
> r4.setPrefWidth(25.3);
> r5.setPrefWidth(25.3);
> r6.setPrefWidth(25.4);
> r1.setMaxHeight(30);
> r2.setMaxHeight(30);
> r3.setMaxHeight(30);
> r4.setMaxHeight(30);
> r5.setMaxHeight(30);
> r6.setMaxHeight(30);
> HBox hbox2 = new HBox(r1, r2, r3, r4, r5, r6);
> hbox2.setBackground(new Background(new BackgroundFill(Color.RED, null, 
> null)));
> hbox2.setPrefHeight(40);
> hbox2.setPrefWidth(152);
> 
> VBox root = new VBox(new HBox(hbox1), new HBox(hbox2));
> root.setSpacing(20);
> Scene scene = new Scene(root, 500, 250);
> 
> primaryStage.setScene(scene);
> primaryStage.show();
> 
> 
> Here's a before-and-after comparison of the program above after applying the 
> fix. Note that 'before', the backgrounds of the container (red) and its 
> content (black) don't align perfectly. The render scale is 175% in this 
> example.
> ![pixel-glitch](https://user-images.githubusercontent.com/43553916/112891996-146e2d80-90d9-11eb-9d83-97754ae38dc1.png)
> 
> I've filed a bug report and will change the title of the GitHub issue as soon 
> as it's posted.

I had a look at the PR. But it took quite a while to fully understand the 
changes (also the current implementation ). 
I think it make sense to improve it a bit e.g. by adding javadoc to the new 
methods, maybe also the existing? Other ideas are also welcome. 
With that said maybe more people will review it then. I will have a full look 
soon as well. :)

-

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


Re: RFR: 8271474: Tree-/TableCell: inconsistent edit event firing pattern

2021-09-22 Thread Marius Hanl
On Tue, 7 Sep 2021 14:53:50 GMT, Jeanette Winzenburg  
wrote:

> this PR fixes the inconsistent event firing pattern in cell's xxEdit methods 
> (please see the issue for more details):
> 
> - fires event if column != null
> - accesses table state if table != null
> 
> The first requires a change in CellEditEvent which now allows null table in 
> its constructor.
> 
> Added tests that failed/passed before/after the fix (along with some that 
> also passed before for complete coverage of state permutations). Changed two 
> old test methods which passed/failed before/after the fix - but did test the 
> wrong thingy anyway ;)

Looks good to me. 

-

Marked as reviewed by mhanl (Author).

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


Re: RFR: 8271054: [REDO] Wrong stage gets focused after modal stage creation [v3]

2021-09-22 Thread Thiago Milczarek Sayao
> Found the problem thru this path:
> 
> **WindowStage.java**
> 
> final void handleFocusDisabled() {
> if (activeWindows.isEmpty()) {
> return;
> }
> WindowStage window = activeWindows.get(activeWindows.size() - 1);
> window.setIconified(false);
> window.requestToFront();
> window.requestFocus();
> }
> 
> 
> **glass_window.cpp**
> 
> void WindowContextBase::process_focus(GdkEventFocus* event) {
>...
> 
> if (jwindow) {
> if (!event->in || isEnabled()) {
> mainEnv->CallVoidMethod(jwindow, jWindowNotifyFocus,
> event->in ? com_sun_glass_events_WindowEvent_FOCUS_GAINED 
> : com_sun_glass_events_WindowEvent_FOCUS_LOST);
> CHECK_JNI_EXCEPTION(mainEnv)
> } else {
> mainEnv->CallVoidMethod(jwindow, jWindowNotifyFocusDisabled);
> CHECK_JNI_EXCEPTION(mainEnv)
> }
> }
> }
> 
> 
> So `glass_window.cpp` was triggering `jWindowNotifyFocusDisabled` which 
> triggered the java code on the Primary Stage (on the bug reproduce code).
> 
> The docs states:
> 
> /**
>  * Enables or disables the window.
>  *
>  * A disabled window is unfocusable by definition.
>  * Also, key or mouse events aren't generated for disabled windows.
>  *
>  * When a user tries to activate a disabled window, or the window gets
>  * accidentally brought to the top of the stacking order, the window
>  * generates the FOCUS_DISABLED window event. A Glass client should react
>  * to this event and bring the currently active modal blocker of the
>  * disabled window to top by calling blocker's minimize(false), toFront(),
>  * and requestFocus() methods. It may also 'blink' the blocker window to
>  * further attract user's attention.
>  *
>  .
> 
> 
> So I guess the C++ side looks ok, java side on `handleFocusDisabled` I did 
> not understand why it `requestToFront` and `requestFocus` on the latest 
> window.
> 
> The solution makes disabled windows unfocusable and prevents mouse and 
> keyboard events as the docs states, making it compatible with other platforms.

Thiago Milczarek Sayao has updated the pull request incrementally with one 
additional commit since the last revision:

  Break if reach self

-

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/598/files
  - new: https://git.openjdk.java.net/jfx/pull/598/files/850cfc8b..eb93b8b9

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jfx=598=02
 - incr: https://webrevs.openjdk.java.net/?repo=jfx=598=01-02

  Stats: 5 lines in 1 file changed: 3 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jfx/pull/598.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/598/head:pull/598

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


Re: RFR: 8273946: Move clearQuad method to BaseShaderGraphics superclass

2021-09-22 Thread Kevin Rushforth
On Wed, 22 Sep 2021 13:59:43 GMT, Nir Lisker  wrote:

> > We added `@SuppressWarnings("removal")` annotations for JDK-8264139, so I'm 
> > surprised the IDE is still flagging it.
> 
> The warning is on the `import` of the class, which can be suppressed by 
> adding the annotation to the class declaration. Maybe it's only this way in 
> the Eclipse compiler.

This sounds like an Eclipse problem then. In any case, I would not consider 
adding annotations to the classes. We went to some effort to make the scope of 
the annotations as local as possible (as did the JDK).

> > We could consider a follow-up issue to clean this up, but I'm not really 
> > inclined to change anything.
> 
> The question is if this can cause any bugs? Is the method supposed to 
> override? If yes and it isn't, it sounds like something could go wrong.

It isn't intended to be an override. The context parameter is passed up to the 
superclass and stored there as well as in the subclass. We could explore a 
different design pattern, but I don't think it is necessary.

-

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


Re: RFR: 8255015: Inconsistent illumination of 3D shape by PointLight

2021-09-22 Thread Andreas Heger
On Mon, 20 Sep 2021 14:11:50 GMT, Kevin Rushforth  wrote:

>> @kevinrushforth 
>>> The fix looks good. I tested it both in isolation and with PR #334 and it 
>>> works on both a retina and non-retina display.
>>> 
>>> If you have time to write an automated test, that would be useful, but if 
>>> not then a manual test would be OK.
>> 
>> Ok, I will try to write an automated test case which draws a sphere in a 
>> SubScene and then calculates the average color of the generated image. The 
>> test will be passed if the calculated average does not differ from the 
>> excepted average color by a certain tolerance value. I'm not sure if I will 
>> manage to do this... but I will give it a try.
>
> @andreas-heger are you able to come up with an automated test for this bug?

@kevinrushforth yes, I still want to write an automated test for this bug. 
Sorry for the delay... I plan to do it within the next two weeks.

-

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


Re: RFR: 8273946: Move clearQuad method to BaseShaderGraphics superclass

2021-09-22 Thread Nir Lisker
On Tue, 21 Sep 2021 12:45:20 GMT, Kevin Rushforth  wrote:

> As mentioned in JBS, the `clearQuad` methods in `D3DGraphics` and 
> `ES2Graphics` are now identical, which should have been the case all along. 
> The fact that they weren't identical was the source of a bug that was only 
> discovered during the testing of 
> [JDK-8090547](https://bugs.openjdk.java.net/browse/JDK-8090547) on the es2 
> pipeline.
> 
> This PR moves the `clearQuad` method to the `BaseShaderGraphics` superclass 
> to get rid of the unnecessary code duplication. This will be helpful when 
> implementing the metal pipeline as well. As a note, I made the `context` 
> field in the `D3DGraphics` final, which it should have been. This is 
> necessary to ensure that moving the method to the super-class is equivalent.
> 
> No new tests are needed, since this is just refactoring.

> We added `@SuppressWarnings("removal")` annotations for JDK-8264139, so I'm 
> surprised the IDE is still flagging it.

The warning is on the `import` of the class, which can be suppressed by adding 
the annotation to the class declaration. Maybe it's only this way in the 
Eclipse compiler.

> We could consider a follow-up issue to clean this up, but I'm not really 
> inclined to change anything.

The question is if this can cause any bugs? Is the method supposed to override? 
If yes and it isn't, it sounds like something could go wrong.

-

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


Integrated: 8273946: Move clearQuad method to BaseShaderGraphics superclass

2021-09-22 Thread Kevin Rushforth
On Tue, 21 Sep 2021 12:45:20 GMT, Kevin Rushforth  wrote:

> As mentioned in JBS, the `clearQuad` methods in `D3DGraphics` and 
> `ES2Graphics` are now identical, which should have been the case all along. 
> The fact that they weren't identical was the source of a bug that was only 
> discovered during the testing of 
> [JDK-8090547](https://bugs.openjdk.java.net/browse/JDK-8090547) on the es2 
> pipeline.
> 
> This PR moves the `clearQuad` method to the `BaseShaderGraphics` superclass 
> to get rid of the unnecessary code duplication. This will be helpful when 
> implementing the metal pipeline as well. As a note, I made the `context` 
> field in the `D3DGraphics` final, which it should have been. This is 
> necessary to ensure that moving the method to the super-class is equivalent.
> 
> No new tests are needed, since this is just refactoring.

This pull request has now been integrated.

Changeset: 338b9994
Author:Kevin Rushforth 
URL:   
https://git.openjdk.java.net/jfx/commit/338b999414ed5dc8fea19c12bd3e656fd9cab6f4
Stats: 59 lines in 3 files changed: 18 ins; 40 del; 1 mod

8273946: Move clearQuad method to BaseShaderGraphics superclass

Reviewed-by: jpereda, nlisker

-

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


Re: RFR: 8273946: Move clearQuad method to BaseShaderGraphics superclass

2021-09-22 Thread Kevin Rushforth
On Tue, 21 Sep 2021 12:45:20 GMT, Kevin Rushforth  wrote:

> As mentioned in JBS, the `clearQuad` methods in `D3DGraphics` and 
> `ES2Graphics` are now identical, which should have been the case all along. 
> The fact that they weren't identical was the source of a bug that was only 
> discovered during the testing of 
> [JDK-8090547](https://bugs.openjdk.java.net/browse/JDK-8090547) on the es2 
> pipeline.
> 
> This PR moves the `clearQuad` method to the `BaseShaderGraphics` superclass 
> to get rid of the unnecessary code duplication. This will be helpful when 
> implementing the metal pipeline as well. As a note, I made the `context` 
> field in the `D3DGraphics` final, which it should have been. This is 
> necessary to ensure that moving the method to the super-class is equivalent.
> 
> No new tests are needed, since this is just refactoring.

Thanks for the review.

> Two unrelated comments that I have observed during the review:
> 
> 1. `java.security.AccessController` is deprecated for removal since 17. We 
> need to do something about this. It's used in `BaseShaderGraphics`, which is 
> where I saw the warning, but it's used in other places too.

We added `@SuppressWarnings("removal")` annotations for 
[JDK-8264139](https://bugs.openjdk.java.net/browse/JDK-8264139), so I'm 
surprised the IDE is still flagging it. FWIW, it will be several years before 
we can remove any of these calls, since running with a security manager is 
still supported in JDK 17 LTS.

> 2. Eclipse graciously informs me that "The method `D3DGraphics.getContext()` 
> does not override the inherited method from `BaseShaderGraphics` since it is 
> private to a different package". It detected the `@Override` annotation there 
> and noted that the superclass method is not visible to this class since they 
> are in different packages, so it is not actually overriding. This could lead 
> to another subtle bug. Maybe that method should be protected. I didn't 
> investigate much further.

Interesting. I guess the only reason the IDE is warning in this case is that it 
notices the `@Override` annotation, which is there because it implements the 
method in D3DGraphicsContextSource, and warns that it doesn't override the 
method of the same name in the superclass. We could consider a follow-up issue 
to clean this up, but I'm not really inclined to change anything.

-

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


Re: RFR: 8273969: Memory Leak on the Runnable provided to Platform.startup [v2]

2021-09-22 Thread Kevin Rushforth
On Wed, 22 Sep 2021 10:18:09 GMT, Florian Kirmaier  
wrote:

>> Probably my most boring PR. ;)
>> Setting the lambda to null, after it has been used, fixes the leak.
>
> Florian Kirmaier has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   JDK-8273969
>   Some changes based on code review

Marked as reviewed by kcr (Lead).

-

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


Integrated: 8090158: Wrong implementation of adjustValue in scrollBars

2021-09-22 Thread Hadzic Samir
On Tue, 20 Jul 2021 09:12:05 GMT, Hadzic Samir  wrote:

> JBS bug: [JDK-8090158](https://bugs.openjdk.java.net/browse/JDK-8090158)
> 
> The javadoc of the ScrollBar#adjustValue specifically says that it will 
> adjust the value based on the block increment value. Therefore, there is no 
> reason to stop at the given value when reaching an end.

This pull request has now been integrated.

Changeset: 5c355fa2
Author:Hadzic Samir 
Committer: Kevin Rushforth 
URL:   
https://git.openjdk.java.net/jfx/commit/5c355fa231e862a9db9b524cf14715066df142f5
Stats: 32 lines in 2 files changed: 28 ins; 3 del; 1 mod

8090158: Wrong implementation of adjustValue in scrollBars

Reviewed-by: aghaisas, kcr

-

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


Re: RFR: 8273969: Memory Leak on the Runnable provided to Platform.startup [v2]

2021-09-22 Thread Florian Kirmaier
> Probably my most boring PR. ;)
> Setting the lambda to null, after it has been used, fixes the leak.

Florian Kirmaier has updated the pull request incrementally with one additional 
commit since the last revision:

  JDK-8273969
  Some changes based on code review

-

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/626/files
  - new: https://git.openjdk.java.net/jfx/pull/626/files/7897fd64..9620ed5e

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jfx=626=01
 - incr: https://webrevs.openjdk.java.net/?repo=jfx=626=00-01

  Stats: 103 lines in 2 files changed: 55 ins; 48 del; 0 mod
  Patch: https://git.openjdk.java.net/jfx/pull/626.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/626/head:pull/626

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


Re: RFR: 8273969: Memory Leak on the Runnable provided to Platform.startup [v2]

2021-09-22 Thread Florian Kirmaier
On Mon, 20 Sep 2021 12:56:39 GMT, Kevin Rushforth  wrote:

>> Florian Kirmaier has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   JDK-8273969
>>   Some changes based on code review
>
> tests/system/src/test/java/test/javafx/scene/PlatformStartupMemoryLeakTest.java
>  line 26:
> 
>> 24:  */
>> 25: 
>> 26: package test.javafx.scene;
> 
> Similar tests are in the `test.com.sun.javafx.application` package, so I 
> recommend putting this test there.

done

> tests/system/src/test/java/test/javafx/scene/PlatformStartupMemoryLeakTest.java
>  line 34:
> 
>> 32: public class PlatformStartupMemoryLeakTest {
>> 33: 
>> 34: @Test
> 
> Since this test calls `Platform::startup`, this class must only have a single 
> `@Test` method. I recommend adding a comment to that effect, so that someone 
> doesn't try to add a second test method later.

I think that's redundant after moving it to the application package. 
In the application package, most of the test classes only have 1 test for this 
reason.

> tests/system/src/test/java/test/javafx/scene/PlatformStartupMemoryLeakTest.java
>  line 37:
> 
>> 35: public void testStartupLeak() {
>> 36: JMemoryBuddy.memoryTest((checker) -> {
>> 37: // Doesn't work as lambda for some reason, due to 
>> "BoundMethodHandle$Species_L"
> 
> Based on Tom's comment, and also my reading of the spec, this is expected (if 
> somewhat counter-intuitive), so please modify this comment to indicate that 
> the `Runnable` must not be turned into a lambda.

done

> tests/system/src/test/java/test/javafx/scene/PlatformStartupMemoryLeakTest.java
>  line 47:
> 
>> 45: checker.assertCollectable(r);
>> 46: });
>> 47: }
> 
> I recommend adding an `@After` (or `@AfterClass`) cleanup method that calls 
> `Platform::exit`.

done

-

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