diff --git a/src/com/bulenkov/darcula/ui/DarculaComboBoxUI.java b/src/com/bulenkov/darcula/ui/DarculaComboBoxUI.java index 0835492..16b4fab 100755 --- a/src/com/bulenkov/darcula/ui/DarculaComboBoxUI.java +++ b/src/com/bulenkov/darcula/ui/DarculaComboBoxUI.java @@ -42,11 +42,6 @@ import java.awt.geom.Path2D; @SuppressWarnings("GtkPreferredJComboBoxRenderer") public class DarculaComboBoxUI extends BasicComboBoxUI implements Border { private final JComboBox myComboBox; - // Flag for calculating the display size - private boolean myDisplaySizeDirty = true; - - // Cached the size that the display needs to render the largest item - private Dimension myDisplaySizeCache = new Dimension(0, 0); private Insets myPadding; public DarculaComboBoxUI(JComboBox comboBox) { @@ -128,65 +123,6 @@ public class DarculaComboBoxUI extends BasicComboBoxUI implements Border { return new InsetsUIResource(4, 7, 4, 5); } - protected Dimension getDisplaySize() { - Dimension display = new Dimension(); - - ListCellRenderer renderer = comboBox.getRenderer(); - if (renderer == null) { - renderer = new DefaultListCellRenderer(); - } - - boolean sameBaseline = true; - - Object prototypeValue = comboBox.getPrototypeDisplayValue(); - if (prototypeValue != null) { - display = getSizeForComponent(renderer.getListCellRendererComponent(listBox, prototypeValue, -1, false, false)); - } else { - final ComboBoxModel model = comboBox.getModel(); - - int baseline = -1; - Dimension d; - - if (model.getSize() > 0) { - for (int i = 0; i < model.getSize(); i++) { - Object value = model.getElementAt(i); - Component rendererComponent = renderer.getListCellRendererComponent(listBox, value, -1, false, false); - d = getSizeForComponent(rendererComponent); - if (sameBaseline && value != null && (!(value instanceof String) || !"".equals(value))) { - int newBaseline = rendererComponent.getBaseline(d.width, d.height); - if (newBaseline == -1) { - sameBaseline = false; - } - else if (baseline == -1) { - baseline = newBaseline; - } - else if (baseline != newBaseline) { - sameBaseline = false; - } - } - display.width = Math.max(display.width, d.width); - display.height = Math.max(display.height, d.height); - } - } - else { - display = getDefaultSize(); - if (comboBox.isEditable()) { - display.width = 100; - } - } - } - - if (myPadding != null) { - display.width += myPadding.left + myPadding.right; - display.height += myPadding.top + myPadding.bottom; - } - - myDisplaySizeCache.setSize(display.width, display.height); - myDisplaySizeDirty = false; - - return display; - } - protected Dimension getSizeForComponent(Component comp) { currentValuePane.add(comp); comp.setFont(comboBox.getFont()); @@ -401,4 +337,14 @@ public class DarculaComboBoxUI extends BasicComboBoxUI implements Border { public boolean isBorderOpaque() { return false; } + + @Override + public Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c) { + return super.getBaselineResizeBehavior(c); + } + + @Override + public int getBaseline(JComponent c, int width, int height) { + return super.getBaseline(c, width, height); + } } \ No newline at end of file