mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
Merge pull request #5654 from Sardtok/5246
Fixes #5246 by overriding getPreferredSize and setting height to 0.
This commit is contained in:
@@ -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;
|
||||
@@ -37,6 +37,12 @@ public class ZoomTreeCellRenderer extends DefaultTreeCellRenderer {
|
||||
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,
|
||||
@@ -48,21 +54,9 @@ public class ZoomTreeCellRenderer extends DefaultTreeCellRenderer {
|
||||
// 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user