diff --git a/source/com/intellij/application/options/ErrorHighlightingPanel.form b/source/com/intellij/application/options/ErrorHighlightingPanel.form
index 2a26789d30bd..71f4ed42d101 100644
--- a/source/com/intellij/application/options/ErrorHighlightingPanel.form
+++ b/source/com/intellij/application/options/ErrorHighlightingPanel.form
@@ -11,7 +11,7 @@
-
+
@@ -20,27 +20,16 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -49,21 +38,32 @@
+
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
+
+
-
+
+
+
+
diff --git a/source/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java b/source/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java
index 2f76a97ad766..ad2a109699c5 100644
--- a/source/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java
+++ b/source/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java
@@ -239,12 +239,10 @@ public class EditorMarkupModelImpl extends MarkupModelImpl implements EditorMark
}
private void showTooltip(MouseEvent e, final TooltipRenderer tooltipObject) {
- if (tooltipObject != null) {
- final TooltipController tooltipController = HintManager.getInstance().getTooltipController();
- tooltipController.showTooltipByMouseMove(myEditor, e, tooltipObject,
- myEditor.getVerticalScrollbarOrientation() == EditorEx.VERTICAL_SCROLLBAR_RIGHT,
- ERROR_STRIPE_TOOLTIP_GROUP);
- }
+ final TooltipController tooltipController = HintManager.getInstance().getTooltipController();
+ tooltipController.showTooltipByMouseMove(myEditor, e, tooltipObject,
+ myEditor.getVerticalScrollbarOrientation() == EditorEx.VERTICAL_SCROLLBAR_RIGHT,
+ ERROR_STRIPE_TOOLTIP_GROUP);
}
private int visibleLineToYPosition(int lineNumber, int scrollBarHeight) {
@@ -438,27 +436,37 @@ public class EditorMarkupModelImpl extends MarkupModelImpl implements EditorMark
}
public boolean doClick(final MouseEvent e, final double width) {
- if (inside(e, width)) {
- RangeHighlighter marker = markers.get(0);
- final int offset = marker.getStartOffset();
- final Document doc = myEditor.getDocument();
- if (doc.getLineCount() > 0) {
- // Necessary to expand folded block even if naviagting just before one
- // Very useful when navigating to first unused import statement.
- int lineEnd = doc.getLineEndOffset(doc.getLineNumber(offset));
- myEditor.getCaretModel().moveToOffset(lineEnd);
- }
-
- myEditor.getCaretModel().moveToOffset(offset);
- myEditor.getSelectionModel().removeSelection();
- ScrollingModel scrollingModel = myEditor.getScrollingModel();
- scrollingModel.disableAnimation();
- scrollingModel.scrollToCaret(ScrollType.CENTER);
- scrollingModel.enableAnimation();
- fireErrorMarkerClicked(marker, e);
- return true;
+ if (!inside(e, width)) {
+ return false;
}
- return false;
+ final int y = e.getY();
+ RangeHighlighter marker = markers.get(0);
+ int offset = marker.getStartOffset();
+ for (int i = 0; i< paintingEndOffsets.size(); i++) {
+ final int endY = paintingEndOffsets.get(i);
+ if (y < endY) {
+ marker = markers.get(i);
+ offset = marker.getStartOffset();
+ break;
+ }
+ }
+
+ final Document doc = myEditor.getDocument();
+ if (doc.getLineCount() > 0) {
+ // Necessary to expand folded block even if naviagting just before one
+ // Very useful when navigating to first unused import statement.
+ int lineEnd = doc.getLineEndOffset(doc.getLineNumber(offset));
+ myEditor.getCaretModel().moveToOffset(lineEnd);
+ }
+
+ myEditor.getCaretModel().moveToOffset(offset);
+ myEditor.getSelectionModel().removeSelection();
+ ScrollingModel scrollingModel = myEditor.getScrollingModel();
+ scrollingModel.disableAnimation();
+ scrollingModel.scrollToCaret(ScrollType.CENTER);
+ scrollingModel.enableAnimation();
+ fireErrorMarkerClicked(marker, e);
+ return true;
}
private boolean inside(MouseEvent e, double width) {
@@ -491,9 +499,10 @@ public class EditorMarkupModelImpl extends MarkupModelImpl implements EditorMark
}
}
if (infos.size() != 0) {
+ // show errors first
Collections.sort(infos, new Comparator() {
public int compare(final HighlightInfo o1, final HighlightInfo o2) {
- return o1.getSeverity().compareTo(o2.getSeverity());
+ return o2.getSeverity().compareTo(o1.getSeverity());
}
});
final HighlightInfoComposite composite = new HighlightInfoComposite(infos);
diff --git a/source/com/intellij/ui/LightweightHint.java b/source/com/intellij/ui/LightweightHint.java
index eda48d72ffe4..3e3e228403b8 100644
--- a/source/com/intellij/ui/LightweightHint.java
+++ b/source/com/intellij/ui/LightweightHint.java
@@ -14,13 +14,14 @@ import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.EventListener;
import java.util.EventObject;
+import java.util.Map;
public class LightweightHint implements Hint, UserDataHolder {
private static final Logger LOG = Logger.getInstance("#com.intellij.ui.LightweightHint");
private final JComponent myComponent;
private JComponent myFocusBackComponent;
- private final THashMap myUserMap = new THashMap(1);
+ private final Map myUserMap = new THashMap(1);
private final EventListenerList myListenerList = new EventListenerList();
private MyEscListener myEscListener;
diff --git a/util/src/com/intellij/openapi/util/UserDataHolderBase.java b/util/src/com/intellij/openapi/util/UserDataHolderBase.java
index fb3c516c7e12..6a5dc4dd1074 100644
--- a/util/src/com/intellij/openapi/util/UserDataHolderBase.java
+++ b/util/src/com/intellij/openapi/util/UserDataHolderBase.java
@@ -8,21 +8,24 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.util.containers.HashMap;
import gnu.trove.THashMap;
+import java.util.Map;
+
public class UserDataHolderBase implements UserDataHolder, Cloneable{
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.util.UserDataHolderBase");
- private THashMap myUserMap = null;
+ private Map myUserMap = null;
private static final Object USER_MAP_LOCK = new Object();
- protected static final Key COPYABLE_USER_MAP_KEY = Key.create("COPYABLE_USER_MAP_KEY");
+ protected static final Key> COPYABLE_USER_MAP_KEY = Key.create("COPYABLE_USER_MAP_KEY");
protected Object clone(){
try{
UserDataHolderBase clone = (UserDataHolderBase)super.clone();
- HashMap copyableMap = (HashMap)clone.getUserData(COPYABLE_USER_MAP_KEY);
+ HashMap copyableMap = clone.getUserData(COPYABLE_USER_MAP_KEY);
clone.myUserMap = null;
if (copyableMap != null){
- clone.putUserData(COPYABLE_USER_MAP_KEY, (HashMap)copyableMap.clone());
+ final HashMap mapclone = (HashMap)copyableMap.clone();
+ clone.putUserData(COPYABLE_USER_MAP_KEY, mapclone);
}
return clone;
}
@@ -60,7 +63,7 @@ public class UserDataHolderBase implements UserDataHolder, Cloneable{
synchronized(USER_MAP_LOCK){
if (myUserMap == null){
if (value == null) return;
- myUserMap = new THashMap(4);
+ myUserMap = new THashMap(4);
}
if (value != null){
myUserMap.put(key, value);
@@ -80,7 +83,7 @@ public class UserDataHolderBase implements UserDataHolder, Cloneable{
protected T getCopyableUserDataImpl(Key key) {
synchronized(USER_MAP_LOCK){
- HashMap map = (HashMap)getUserData(COPYABLE_USER_MAP_KEY);
+ HashMap map = getUserData(COPYABLE_USER_MAP_KEY);
if (map == null) return null;
return (T)map.get(key);
}
@@ -92,10 +95,10 @@ public class UserDataHolderBase implements UserDataHolder, Cloneable{
protected void putCopyableUserDataImpl(Key key, T value) {
synchronized(USER_MAP_LOCK){
- HashMap map = (HashMap)getUserData(COPYABLE_USER_MAP_KEY);
+ HashMap map = getUserData(COPYABLE_USER_MAP_KEY);
if (map == null){
if (value == null) return;
- map = new HashMap(4);
+ map = new HashMap(4);
putUserData(COPYABLE_USER_MAP_KEY, map);
}
if (value != null){
diff --git a/util/src/com/intellij/util/SmartList.java b/util/src/com/intellij/util/SmartList.java
index 8d6c24b80eff..fce494f99415 100644
--- a/util/src/com/intellij/util/SmartList.java
+++ b/util/src/com/intellij/util/SmartList.java
@@ -30,7 +30,7 @@ public class SmartList extends AbstractList {
}
public E get(int index) {
- if (index < 2) {
+ if (mySize <= 2) {
return myArray2[index];
}
else {