From 5afacb6c1a959f81390e2d0926acdcdf66a012ac Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 30 Aug 2019 13:43:13 +0200 Subject: [PATCH] ScrollPane: fixed repainting on focus changes --- .../formdev/flatlaf/ui/FlatScrollPaneUI.java | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollPaneUI.java index 7e39c6d1..4705ce6e 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollPaneUI.java @@ -48,18 +48,14 @@ public class FlatScrollPaneUI protected void installListeners( JScrollPane c ) { super.installListeners( c ); - JViewport viewport = scrollpane.getViewport(); - if( viewport != null ) - viewport.addContainerListener( getHandler() ); + addViewportListeners( scrollpane.getViewport() ); } @Override protected void uninstallListeners( JComponent c ) { super.uninstallListeners( c ); - JViewport viewport = scrollpane.getViewport(); - if( viewport != null ) - viewport.removeContainerListener( getHandler() ); + removeViewportListeners( scrollpane.getViewport() ); handler = null; } @@ -77,20 +73,30 @@ public class FlatScrollPaneUI JViewport oldViewport = (JViewport) (e.getOldValue()); JViewport newViewport = (JViewport) (e.getNewValue()); - if( oldViewport != null ) { - oldViewport.removeContainerListener( getHandler() ); + removeViewportListeners( oldViewport ); + addViewportListeners( newViewport ); + } - Component oldView = oldViewport.getView(); - if( oldView != null ) - oldView.removeFocusListener( getHandler() ); - } - if( newViewport != null ) { - newViewport.addContainerListener( getHandler() ); + private void addViewportListeners( JViewport viewport ) { + if( viewport == null ) + return; - Component newView = newViewport.getView(); - if( newView != null ) - newView.addFocusListener( getHandler() ); - } + viewport.addContainerListener( getHandler() ); + + Component view = viewport.getView(); + if( view != null ) + view.addFocusListener( getHandler() ); + } + + private void removeViewportListeners( JViewport viewport ) { + if( viewport == null ) + return; + + viewport.removeContainerListener( getHandler() ); + + Component view = viewport.getView(); + if( view != null ) + view.removeFocusListener( getHandler() ); } @Override