fix selection blinking

This commit is contained in:
Konstantin Bulenkov
2011-03-10 20:03:42 +03:00
parent 321fa82d51
commit 7aee4529db
@@ -15,16 +15,11 @@
*/
package com.intellij.ide.navigationToolbar;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.LangDataKeys;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.psi.PsiElement;
import com.intellij.ui.SimpleColoredComponent;
import com.intellij.ui.SimpleTextAttributes;
import com.intellij.util.Icons;
import com.intellij.util.ui.EmptyIcon;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import javax.swing.*;
import java.awt.*;
@@ -32,7 +27,7 @@ import java.awt.*;
/**
* @author Konstantin Bulenkov
*/
class NavBarItem extends SimpleColoredComponent implements DataProvider{
class NavBarItem extends SimpleColoredComponent {
private final String myText;
private final SimpleTextAttributes myAttributes;
private final int myIndex;
@@ -91,10 +86,11 @@ class NavBarItem extends SimpleColoredComponent implements DataProvider{
setIcon(myIcon);
final Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
boolean focused = isPopupElement ? myPanel.isNodePopupActive() : focusOwner == myPanel;
final boolean focused = isPopupElement || (focusOwner == myPanel && !myPanel.isNodePopupShowing());
final NavBarModel model = myPanel.getModel();
boolean selected = isPopupElement ? myPanel.isSelectedInPopup(myObject) : model.getSelectedIndex() == myIndex;
final boolean selected = isPopupElement ? myPanel.isSelectedInPopup(myObject)
: model.getSelectedIndex() == myIndex;
setPaintFocusBorder(!focused && selected && !isPopupElement);
setFocusBorderAroundIcon(false);
@@ -136,21 +132,4 @@ class NavBarItem extends SimpleColoredComponent implements DataProvider{
}
};
}
@Override
public Object getData(@NonNls String dataId) {
if (PlatformDataKeys.PROJECT.is(dataId)) {
return myPanel.getProject();
}
if (LangDataKeys.PSI_ELEMENT.is(dataId)) {
return myObject instanceof PsiElement ? myObject : null;
}
if (LangDataKeys.PSI_FILE.is(dataId)) {
return myObject instanceof PsiElement ? ((PsiElement)myObject).getContainingFile() : null;
}
return null;
}
}