Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDani Megert2004-05-14 13:18:43 +0000
committerDani Megert2004-05-14 13:18:43 +0000
commitd6006daf6c1e8d028d912c80ea5a050f1264af57 (patch)
treea66baf1abf9f642f12a546741efbdeeffed944db /org.eclipse.jface.text/src/org
parent13b0107664af9bae4f7ff201657a92bbce21d9d6 (diff)
downloadeclipse.platform.text-d6006daf6c1e8d028d912c80ea5a050f1264af57.tar.gz
eclipse.platform.text-d6006daf6c1e8d028d912c80ea5a050f1264af57.tar.xz
eclipse.platform.text-d6006daf6c1e8d028d912c80ea5a050f1264af57.zip
Fixed bug 61095: [rulers] Clicking folding chevron switches to super method
Diffstat (limited to 'org.eclipse.jface.text/src/org')
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java61
1 files changed, 52 insertions, 9 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java
index bcd0dbd8c75..aad18a96503 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java
@@ -180,6 +180,11 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
* @since 3.0
*/
private Cursor fLastCursor;
+ /**
+ * This ruler's mouse listener.
+ * @since 3.0
+ */
+ private MouseListener fMouseListener;
/**
* Constructs this column with the given arguments.
@@ -256,7 +261,7 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
fHitDetectionCursor= new Cursor(parentControl.getDisplay(), SWT.CURSOR_HAND);
- fCanvas= new Canvas(parentControl, SWT.NO_BACKGROUND);
+ fCanvas= createCanvas(parentControl);
fCanvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent event) {
@@ -273,21 +278,35 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
}
});
- fCanvas.addMouseListener(new MouseListener() {
+ fMouseListener= new MouseListener() {
public void mouseUp(MouseEvent event) {
- fParentRuler.setLocationOfLastMouseButtonActivity(event.x, event.y);
- mouseClicked(fParentRuler.getLineOfLastMouseButtonActivity());
+ int lineNumber;
+ if (isPropagatingMouseListener()) {
+ fParentRuler.setLocationOfLastMouseButtonActivity(event.x, event.y);
+ lineNumber= fParentRuler.getLineOfLastMouseButtonActivity();
+ } else
+ lineNumber= fParentRuler.toDocumentLineNumber(event.y);
+
+ mouseClicked(lineNumber);
}
public void mouseDown(MouseEvent event) {
- fParentRuler.setLocationOfLastMouseButtonActivity(event.x, event.y);
+ if (isPropagatingMouseListener())
+ fParentRuler.setLocationOfLastMouseButtonActivity(event.x, event.y);
}
public void mouseDoubleClick(MouseEvent event) {
- fParentRuler.setLocationOfLastMouseButtonActivity(event.x, event.y);
- mouseDoubleClicked(fParentRuler.getLineOfLastMouseButtonActivity());
+ int lineNumber;
+ if (isPropagatingMouseListener()) {
+ fParentRuler.setLocationOfLastMouseButtonActivity(event.x, event.y);
+ lineNumber= fParentRuler.getLineOfLastMouseButtonActivity();
+ } else
+ lineNumber= fParentRuler.toDocumentLineNumber(event.y);
+
+ mouseDoubleClicked(lineNumber);
}
- });
+ };
+ fCanvas.addMouseListener(fMouseListener);
fCanvas.addMouseMoveListener(new MouseMoveListener() {
/*
@@ -307,6 +326,30 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
return fCanvas;
}
+ private Canvas createCanvas(Composite parent) {
+ return new Canvas(parent, SWT.NO_BACKGROUND) {
+ /*
+ * @see org.eclipse.swt.widgets.Control#addMouseListener(org.eclipse.swt.events.MouseListener)
+ * @since 3.0
+ */
+ public void addMouseListener(MouseListener listener) {
+ if (isPropagatingMouseListener() || listener == fMouseListener)
+ super.addMouseListener(listener);
+ }
+ };
+ }
+
+ /**
+ * Tells whether this ruler column propagates mouse listener
+ * events to its parent.
+ *
+ * @return <code>true</code> if propagating to parent
+ * @since 3.0
+ */
+ protected boolean isPropagatingMouseListener() {
+ return true;
+ }
+
/**
* Hook method for a mouse double click event on the given ruler line.
*
@@ -887,4 +930,4 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
public void removeVerticalRulerListener(IVerticalRulerListener listener) {
throw new UnsupportedOperationException();
}
-}
+} \ No newline at end of file

Back to the top