On Wed, 31 May 2023 11:34:19 GMT, Tejesh R <t...@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

Reply via email to