From f0f9f180a4c4bb9a5c20ee7259f5679331a856a6 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Tue, 19 Nov 2013 19:16:17 +0100 Subject: [PATCH] fix user completion popup dimensions + add empty border (cherry picked from commit 04d138d0d52b3accc9234c7466f0e15ac8e29389) --- .../ui/PopupWithTextFieldWithAutoCompletion.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/PopupWithTextFieldWithAutoCompletion.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/PopupWithTextFieldWithAutoCompletion.java index f37b7b173b63..fbfb71de3c04 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/PopupWithTextFieldWithAutoCompletion.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/PopupWithTextFieldWithAutoCompletion.java @@ -26,6 +26,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import javax.swing.border.EmptyBorder; +import java.awt.*; import java.awt.event.KeyEvent; import java.util.Collection; @@ -35,10 +37,7 @@ public class PopupWithTextFieldWithAutoCompletion extends TextFieldWithAutoCompl public PopupWithTextFieldWithAutoCompletion(@NotNull Project project, @NotNull Collection variants) { super(project, new StringsCompletionProvider(variants, null), false, null); - - // this hack is needed, because the preferred size is requested before createEditor(), - // and EditorTextField#getPreferredSize() hardcodes unacceptable (100, 20) - setPreferredSize(new JBTextField(20).getPreferredSize()); + setBorder(new EmptyBorder(3, 3, 3, 3)); } public JBPopup createPopup() { @@ -48,6 +47,14 @@ public class PopupWithTextFieldWithAutoCompletion extends TextFieldWithAutoCompl .setCancelKeyEnabled(true) .setRequestFocus(true) .createPopup(); + + final JBTextField field = new JBTextField(20); + final Dimension size = field.getPreferredSize(); + final Insets insets = getBorder().getBorderInsets(this); + size.height+=6 + insets.top + insets.bottom; + size.width +=4 + insets.left + insets.right; + myPopup.setSize(size); + return myPopup; }