force hide shadow

This commit is contained in:
Konstantin Bulenkov
2012-04-26 04:06:10 +02:00
parent a58b97b936
commit 26d3f01256
3 changed files with 20 additions and 8 deletions
@@ -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;
}
}
@@ -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;
@@ -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<Boolean>() {
@@ -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();