RFR: 8006421: GraphicsConfiguration of a frame is changed when the frame is moved to another screen

Alexander Zvegintsev azvegint at openjdk.org
Thu Jun 1 16:20:05 UTC 2023


On Wed, 31 May 2023 11:34:19 GMT, Tejesh R <tr at openjdk.org> wrote:

> When a frame is dragged from one screen to another screen, the `GraphicsConfigurations` may vary depending on screen/monitor. However, transparency has to be maintained since it is expected as it is set. So the fix addresses in maintaining the translucency capability when frame is moved from one screen to another screen. For main screen, translucency is set when `setBackground` is called, but for second screen the same is not taken care. Hence setting of Translucency Capable `GC` is taken care when screen switch happens. The fix handles only for non-opaque windows alone retaining the behavior for opaque windows. 
> The fix is verified in CI for regression check, which is Green.

src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java line 698:

> 696:                         newGC = gds[i].getDefaultConfiguration();
> 697:                         if (target != null
> 698:                                 && target.getBackground() != SystemColor.window

This doesn't seem right, it'll change to a translucent gc even for opaque windows that has some non standard color as a background.

Probably it is better to check if previous gc was translucent capable 
`&& target.getGraphicsConfiguration().isTranslucencyCapable()`

src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java line 707:

> 705:                                 }
> 706:                             }
> 707:                         }

Looks like this code is also repeated on lines 714-724 and can be extracted to a function.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14246#discussion_r1213392322
PR Review Comment: https://git.openjdk.org/jdk/pull/14246#discussion_r1213394373



More information about the client-libs-dev mailing list