From 921099df04df6fd4375a3215ca98676d45481519 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Sat, 7 Nov 2015 11:16:20 +0100 Subject: [PATCH] Make tooltips saner --- .../mode/java/pdex/JavaTextAreaPainter.java | 72 ++++++++++--------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java b/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java index 74ae6f714..8cec53216 100644 --- a/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java +++ b/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java @@ -26,6 +26,7 @@ import processing.mode.java.tweak.*; import java.awt.Color; import java.awt.Cursor; import java.awt.Font; +import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; @@ -114,39 +115,6 @@ public class JavaTextAreaPainter extends TextAreaPainter } }); - addMouseMotionListener(new MouseMotionAdapter() { - @Override - public void mouseMoved(final MouseEvent evt) { - int line = textArea.yToLine(evt.getY()); - int x = evt.getX(); - - LineMarker marker = getJavaEditor().findError(line); - if (marker != null) { - Problem problem = marker.getProblem(); - - int lineOffset = textArea.getLineStartOffset(problem.getLineNumber()); - - int lineStart = textArea.getLineStartOffset(line); - int lineEnd = textArea.getLineStopOffset(line); - - int errorStart = lineOffset + problem.getPDELineStartOffset(); - int errorEnd = lineOffset + problem.getPDELineStopOffset() + 1; - - int startOffset = Math.max(errorStart, lineStart) - lineStart; - int stopOffset = Math.min(errorEnd, lineEnd) - lineStart; - - if (x >= getJavaTextArea().offsetToX(line, startOffset) && - x <= getJavaTextArea().offsetToX(line, stopOffset)) { - //setToolTipText(problem.getMessage()); - getJavaEditor().statusToolTip(JavaTextAreaPainter.this, - problem.getMessage(), - problem.isError()); - evt.consume(); - } - } - } - }); - // TweakMode code tweakMode = false; cursorType = Cursor.DEFAULT_CURSOR; @@ -476,6 +444,43 @@ public class JavaTextAreaPainter extends TextAreaPainter } + @Override + public String getToolTipText(MouseEvent evt) { + int line = evt.getY() / getFontMetrics().getHeight() + textArea.getFirstLine(); + if (line < 0 || line > textArea.getLineCount() - 1) { + return null; + } + + LineMarker marker = getJavaEditor().findError(line); + if (marker != null) { + Problem problem = marker.getProblem(); + + int lineOffset = textArea.getLineStartOffset(problem.getLineNumber()); + + int lineStart = textArea.getLineStartOffset(line); + int lineEnd = textArea.getLineStopOffset(line); + + int errorStart = lineOffset + problem.getPDELineStartOffset(); + int errorEnd = lineOffset + problem.getPDELineStopOffset() + 1; + + int startOffset = Math.max(errorStart, lineStart) - lineStart; + int stopOffset = Math.min(errorEnd, lineEnd) - lineStart; + + int x = evt.getX(); + + if (x >= getJavaTextArea().offsetToX(line, startOffset) && + x <= getJavaTextArea().offsetToX(line, stopOffset)) { + getJavaEditor().statusToolTip(JavaTextAreaPainter.this, + problem.getMessage(), + problem.isError()); + return super.getToolTipText(); + } + } + return null; + } + + + /* @Override public String getToolTipText(MouseEvent event) { if (!getJavaEditor().hasJavaTabs()) { @@ -564,6 +569,7 @@ public class JavaTextAreaPainter extends TextAreaPainter // setToolTipText(null); return super.getToolTipText(event); } + */ // TweakMode code