From b7e6877592dd062d1446b4fbbdf8f01028bd8317 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Sat, 18 May 2019 00:45:26 +0300 Subject: [PATCH] improve on wrong-sized-popup and empty-gray-popup problems GitOrigin-RevId: e4cf0c8c032a7659cc8184aaed1718876e3644b0 --- .../src/com/intellij/ide/ui/laf/LafManagerImpl.java | 1 + .../ide/ui/laf/darcula/ui/DarculaJBPopupComboPopup.java | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java index c4292cd34b5a..efd1d56e04d9 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java @@ -871,6 +871,7 @@ public final class LafManagerImpl extends LafManager implements PersistentStateC boolean isHeavyWeightPopup = window instanceof RootPaneContainer && window != UIUtil.getWindow(owner); if (isHeavyWeightPopup) { UIUtil.markAsTypeAheadAware(window); + window.setMinimumSize(null); // clear min-size from prev invocations on JBR11 } if (isHeavyWeightPopup && ((RootPaneContainer)window).getRootPane().getClientProperty(cleanupKey) == null) { final JRootPane rootPane = ((RootPaneContainer)window).getRootPane(); diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaJBPopupComboPopup.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaJBPopupComboPopup.java index 341bfc44d17d..7639a5fb1846 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaJBPopupComboPopup.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaJBPopupComboPopup.java @@ -53,7 +53,12 @@ public class DarculaJBPopupComboPopup implements ComboPopup, @Override public void show() { myJustClosedViaClick = false; - if (myPopup != null) return; + if (myPopup != null) { + if (myPopup.isVisible()) return; + // onClosed() was not called for some reason + myPopup.cancel(); + } + ArrayList items = new ArrayList<>(myComboBox.getModel().getSize()); for (int i = 0, size = myComboBox.getModel().getSize(); i < size; i++) { items.add(myComboBox.getModel().getElementAt(i));