diff options
author | Mark Wielaard <mark@klomp.org> | 2006-08-03 23:15:07 +0000 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2006-08-03 23:15:07 +0000 |
commit | 3003a65c6b00b72247b3cf17ce44156ea9170393 (patch) | |
tree | afd43d1edcf99702afb8ccc924f5eab738dda2e0 | |
parent | 4e094ae77fe2f0a38cf5a20e41ecd6cfad2255b7 (diff) | |
download | classpath-3003a65c6b00b72247b3cf17ce44156ea9170393.tar.gz |
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.
-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(); } |