JBS: https://bugs.openjdk.java.net/browse/JDK-8166856
webrev: http://cr.openjdk.java.net/~flar/JDK-8166856/webrev.00/

Some analysis in the last 2 comments of the JBS, but the main fix is to not send bounds changes down to native when no change has happened from FX code. The main culprit here was that they would be sent down when only a scale change had occurred. Since scale changes occur during dragging across screens this could confuse the native code as to whether a window is in its transitional state due to a drag operation or due to a programmatic change (triggered by echoing back the bounds when the scale change occurs) - each of which might have their own heuristics relating to whether or not the scale is that of the first or second screens. Now we only send the bounds down when they have changed.

I also break out the scale notifications on MacOS to only be sent when the OS determines them to be appropriate rather than when we think they have changed. This keeps us in better sync with the native scale.

This should not affect 8 (but I'll test to be sure) because we didn't send scales up the chain to FX like we do on 9 so the only reason 8 would have to try to send the bounds down is when they have actually changed from FX code. It wasn't until scaling was added to the notification path in 9 that we started sending down false NOP bounds changes...

                        ...jim

Reply via email to