diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java index 38ccd08b..65960fa2 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java @@ -28,11 +28,8 @@ import java.awt.Insets; import java.awt.LayoutManager; import java.awt.LayoutManager2; import java.awt.Window; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.util.function.Function; import javax.swing.JComponent; import javax.swing.JDialog; @@ -41,7 +38,6 @@ import javax.swing.JLayeredPane; import javax.swing.JMenuBar; import javax.swing.JRootPane; import javax.swing.LookAndFeel; -import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.plaf.BorderUIResource; @@ -88,8 +84,6 @@ public class FlatRootPaneUI private Object nativeWindowBorderData; private LayoutManager oldLayout; - private PropertyChangeListener ancestorListener; - private ComponentListener componentListener; private ComponentListener macFullWindowContentListener; public static ComponentUI createUI( JComponent c ) { @@ -178,40 +172,6 @@ public class FlatRootPaneUI protected void installListeners( JRootPane root ) { super.installListeners( root ); - if( SystemInfo.isJava_9_orLater ) { - // On HiDPI screens, where scaling is used, there may be white lines on the - // bottom and on the right side of the window when it is initially shown. - // This is very disturbing in dark themes, but hard to notice in light themes. - // Seems to be a rounding issue when Swing adds dirty region of window - // using RepaintManager.nativeAddDirtyRegion(). - // - // Note: Not using a HierarchyListener here, which would be much easier, - // because this causes problems with mouse clicks in heavy-weight popups. - // Instead, add a listener to the root pane that waits until it is added - // to a window, then add a component listener to the window. - // See: https://github.com/JFormDesigner/FlatLaf/issues/371 - ancestorListener = e -> { - Object oldValue = e.getOldValue(); - Object newValue = e.getNewValue(); - if( newValue instanceof Window ) { - if( componentListener == null ) { - componentListener = new ComponentAdapter() { - @Override - public void componentShown( ComponentEvent e ) { - // add whole root pane to dirty regions when window is initially shown - root.getParent().repaint( root.getX(), root.getY(), root.getWidth(), root.getHeight() ); - } - }; - } - ((Window)newValue).addComponentListener( componentListener ); - } else if( newValue == null && oldValue instanceof Window ) { - if( componentListener != null ) - ((Window)oldValue).removeComponentListener( componentListener ); - } - }; - root.addPropertyChangeListener( "ancestor", ancestorListener ); - } - if( SystemInfo.isMacFullWindowContentSupported ) macFullWindowContentListener = FullWindowContentSupport.macInstallListeners( root ); } @@ -220,17 +180,6 @@ public class FlatRootPaneUI protected void uninstallListeners( JRootPane root ) { super.uninstallListeners( root ); - if( SystemInfo.isJava_9_orLater ) { - if( componentListener != null ) { - Window window = SwingUtilities.windowForComponent( root ); - if( window != null ) - window.removeComponentListener( componentListener ); - componentListener = null; - } - root.removePropertyChangeListener( "ancestor", ancestorListener ); - ancestorListener = null; - } - if( SystemInfo.isMacFullWindowContentSupported ) { FullWindowContentSupport.macUninstallListeners( root, macFullWindowContentListener ); macFullWindowContentListener = null;