From c03978157f9835875c1134c7adf01fa305f7d3cd Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Sat, 5 Oct 2013 00:35:34 +0200 Subject: [PATCH] fix popup flickering under Darcula --- .../com/intellij/ui/popup/PopupComponent.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ui/popup/PopupComponent.java b/platform/platform-impl/src/com/intellij/ui/popup/PopupComponent.java index 506155e84f94..245a1bc029d8 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/PopupComponent.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/PopupComponent.java @@ -21,6 +21,7 @@ import com.intellij.openapi.ui.popup.util.PopupUtil; import com.intellij.openapi.util.SystemInfo; import com.intellij.util.ReflectionUtil; import com.intellij.util.ui.UIUtil; +import com.sun.awt.AWTUtilities; import javax.swing.*; import java.awt.*; @@ -135,7 +136,13 @@ public interface PopupComponent { if (!myRequestFocus) { myDialog.setFocusableWindowState(false); } + if (UIUtil.isUnderDarcula()) { + AWTUtilities.setWindowOpaque(myDialog, false); + } myDialog.setVisible(true); + if (UIUtil.isUnderDarcula()) { + AWTUtilities.setWindowOpaque(myDialog, true); + } SwingUtilities.invokeLater(new Runnable() { public void run() { myDialog.setFocusableWindowState(true); @@ -182,8 +189,16 @@ public interface PopupComponent { } public void show() { - myPopup.show(); Window wnd = getWindow(); + if (UIUtil.isUnderDarcula() && wnd != null) { + AWTUtilities.setWindowOpaque(wnd, false); + } + + myPopup.show(); + + if (UIUtil.isUnderDarcula() && wnd != null) { + AWTUtilities.setWindowOpaque(wnd, true); + } if (wnd instanceof JWindow) { ((JWindow)wnd).getRootPane().putClientProperty(JBPopup.KEY, myJBPopup); }