From 4b9f204951b9a18493a1e23d017a0fa15e21d14f Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 4 Jul 2020 17:51:13 +0200 Subject: [PATCH] Tree: fixed selection colors when used as cell renderer in another component (e.g. in Rhino JavaScript debugger) (issue #120) --- .../src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java index 77333b56..8acd44e8 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java @@ -25,6 +25,7 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import javax.swing.CellRendererPane; import javax.swing.JComponent; import javax.swing.JTree; import javax.swing.LookAndFeel; @@ -226,6 +227,11 @@ public class FlatTreeUI boolean isSelected = tree.isRowSelected( row ); boolean isDropRow = isDropRow( row ); + // if tree is used as cell renderer in another component (e.g. in Rhino JavaScript debugger), + // check whether that component is focused to get correct selection colors + if( !hasFocus && isSelected && tree.getParent() instanceof CellRendererPane ) + hasFocus = FlatUIUtils.isPermanentFocusOwner( tree.getParent().getParent() ); + // wide selection background if( wideSelection && (isSelected || isDropRow) ) { // fill background