diff options
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | javax/swing/JTree.java | 3 | ||||
-rw-r--r-- | javax/swing/plaf/basic/BasicTreeUI.java | 36 |
3 files changed, 47 insertions, 5 deletions
@@ -1,3 +1,16 @@ +2006-07-31 Roman Kennke <kennke@aicas.com> + + PR 28534 + * javax/swing/JTree.java + (JTree(TreeModel)): Set cell renderer to null. + * javax/swing/plaf/basic/BasicTreeUI.java + (setCellRenderer): Finish editing before setting the + cell renderer. Refresh the layout. Don't set the + currentCellRenderer field here (that's done in updateRenderer). + (updateRenderer): Handle createdRenderer field here too. + Set renderer to a default handler when the current renderer + in the JTree is null. + 2006-08-03 Mark Wielaard <mark@klomp.org> * scripts/Makefile.am (EXTRA_DIST): Add import-cacerts.sh. diff --git a/javax/swing/JTree.java b/javax/swing/JTree.java index 6530265b9..fa898c5a9 100644 --- a/javax/swing/JTree.java +++ b/javax/swing/JTree.java @@ -1515,6 +1515,9 @@ public class JTree extends JComponent implements Scrollable, Accessible // The root node appears expanded by default. nodeStates = new Hashtable(); + // The cell renderer gets set by the UI. + cellRenderer = null; + // Install the UI before installing the model. This way we avoid double // initialization of lots of UI and model stuff inside the UI and related // classes. The necessary UI updates are performed via property change diff --git a/javax/swing/plaf/basic/BasicTreeUI.java b/javax/swing/plaf/basic/BasicTreeUI.java index 0ca30b7ad..4aa8a2026 100644 --- a/javax/swing/plaf/basic/BasicTreeUI.java +++ b/javax/swing/plaf/basic/BasicTreeUI.java @@ -477,8 +477,18 @@ public class BasicTreeUI */ protected void setCellRenderer(TreeCellRenderer tcr) { - currentCellRenderer = tcr; + // Finish editing before changing the renderer. + completeEditing(); + + // The renderer is set in updateRenderer. updateRenderer(); + + // Refresh the layout if necessary. + if (treeState != null) + { + treeState.invalidateSizes(); + updateSize(); + } } /** @@ -1172,10 +1182,26 @@ public class BasicTreeUI protected void updateRenderer() { if (tree != null) - currentCellRenderer = tree.getCellRenderer(); - - if (currentCellRenderer == null) - currentCellRenderer = createDefaultCellRenderer(); + { + TreeCellRenderer rend = tree.getCellRenderer(); + if (rend != null) + { + createdRenderer = false; + currentCellRenderer = rend; + if (createdCellEditor) + tree.setCellEditor(null); + } + else + { + tree.setCellRenderer(createDefaultCellRenderer()); + createdRenderer = true; + } + } + else + { + currentCellRenderer = null; + createdRenderer = false; + } updateCellEditor(); } |