Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 11 additions & 17 deletions app/src/processing/app/ui/ZoomTreeCellRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@

package processing.app.ui;

import java.awt.Component;
import java.awt.EventQueue;
import java.awt.*;
import java.util.Optional;

import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;
Expand All @@ -37,6 +37,12 @@ public ZoomTreeCellRenderer(Mode mode) {
setFont(mode.getFont("tree.font"));
}

@Override
public Dimension getPreferredSize() {
return Optional.ofNullable(super.getPreferredSize())
.map(d -> new Dimension(d.width, (int) (d.height * 1.15f)))
.orElse(null);
}

@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
Expand All @@ -48,21 +54,9 @@ public Component getTreeCellRendererComponent(JTree tree, Object value,
// Adjust height for magnified displays. The font is scaled properly,
// but the rows don't automatically use the scaled preferred size.
// https://github.com/processing/processing/issues/4936
int high = getPreferredSize().height;
if (high != 0) {
// Source Sans leading too short, so also add 15% for nicer spacing
final int targetHeight = (int) (high * 1.15f);
int currentHeight = getSize().height;
if (currentHeight != targetHeight) {
// Using invokeLater() to avoid infinite loop on Windows
// https://github.com/processing/processing/issues/5246
EventQueue.invokeLater(new Runnable() {
public void run() {
tree.setRowHeight(targetHeight);
}
});
}
}
// Using setRowHeight(0) to force using this cell renderer's preferred height
// https://github.com/processing/processing/issues/5246#issuecomment-379503233
tree.setRowHeight(0);
return super.getTreeCellRendererComponent(tree, value, selected,
expanded, leaf, row, hasFocus);
}
Expand Down