From 26d3f01256b0feae2bf910f38bf27bbc6ca3e763 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Thu, 26 Apr 2012 04:04:43 +0200 Subject: [PATCH] force hide shadow --- .../codeInsight/lookup/impl/CompletionExtender.java | 13 ++++++++----- .../codeInsight/lookup/impl/LookupImpl.java | 3 +-- .../src/com/intellij/ui/LightweightHint.java | 12 +++++++++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/CompletionExtender.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/CompletionExtender.java index f8285cb2eea5..9b27fb7ef9fa 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/CompletionExtender.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/CompletionExtender.java @@ -16,7 +16,8 @@ package com.intellij.codeInsight.lookup.impl; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.ui.HeavyweightHint; +import com.intellij.ui.HintHint; +import com.intellij.ui.LightweightHint; import com.intellij.ui.awt.RelativePoint; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -29,13 +30,14 @@ import java.awt.event.ComponentEvent; /** * @author Konstantin Bulenkov */ -public class CompletionExtender extends HeavyweightHint { +public class CompletionExtender extends LightweightHint { private LookupElement myElement; private LookupImpl myLookup; private int myIndex; public CompletionExtender(@NotNull LookupElement element, @NotNull LookupImpl lookup) { - super(createComponent(element, lookup), false); + super(createComponent(element, lookup)); + setForceHideShadow(true); myElement = element; myLookup = lookup; myIndex = myLookup.getList().getSelectedIndex(); @@ -74,14 +76,15 @@ public class CompletionExtender extends HeavyweightHint { public boolean show() { final JList list = myLookup.getList(); if (getComponent().getWidth() > list.getWidth()) { - final JComponent rootPane = UIUtil.getRootPane(myLookup.getEditor().getContentComponent()); + final JComponent rootPane = myLookup.myLayeredPane; final Point p = list.getLocationOnScreen(); p.y += list.indexToLocation(list.getSelectedIndex()).y; SwingUtilities.convertPointFromScreen(p, rootPane); if (rootPane != null) { - show(rootPane, p); + final HintHint hint = new HintHint(); + show(rootPane, p.x, p.y, null, hint); return true; } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java index d3ff90f9170f..1efb5e21fb6b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java @@ -45,7 +45,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.*; -import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtilRt; import com.intellij.openapi.wm.IdeFocusManager; @@ -142,7 +141,7 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable private Alarm myHintAlarm = new Alarm(); private JLabel mySortingLabel = new JLabel(); private final JScrollPane myScrollPane; - private final LookupLayeredPane myLayeredPane = new LookupLayeredPane(); + final LookupLayeredPane myLayeredPane = new LookupLayeredPane(); private JButton myScrollBarIncreaseButton; private boolean myStartCompletionWhenNothingMatches; private boolean myResizePending; diff --git a/platform/platform-impl/src/com/intellij/ui/LightweightHint.java b/platform/platform-impl/src/com/intellij/ui/LightweightHint.java index 895b38a61e3e..82716fe2ff65 100644 --- a/platform/platform-impl/src/com/intellij/ui/LightweightHint.java +++ b/platform/platform-impl/src/com/intellij/ui/LightweightHint.java @@ -64,6 +64,8 @@ public class LightweightHint extends UserDataHolderBase implements Hint { private HintHint myHintHint; private JComponent myFocusRequestor; + private boolean myForceHideShadow = false; + public LightweightHint(@NotNull final JComponent component) { myComponent = component; } @@ -207,7 +209,7 @@ public class LightweightHint extends UserDataHolderBase implements Hint { .setMovable(myTitle != null) .setTitle(myTitle) .setModalContext(false) - .setShowShadow(isRealPopup()) + .setShowShadow(isRealPopup() && !isForceHideShadow()) .setCancelKeyEnabled(false) .setCancelOnClickOutside(myCancelOnClickOutside) .setCancelCallback(new Computable() { @@ -259,6 +261,14 @@ public class LightweightHint extends UserDataHolderBase implements Hint { return false; } + public boolean isForceHideShadow() { + return myForceHideShadow; + } + + public void setForceHideShadow(boolean forceHideShadow) { + myForceHideShadow = forceHideShadow; + } + private static boolean fitsLayeredPane(JLayeredPane pane, JComponent component, RelativePoint desiredLocation, HintHint hintHint) { if (hintHint.isAwtTooltip()) { Dimension size = component.getPreferredSize();