diff options
author | Dani Megert | 2004-05-14 13:18:43 +0000 |
---|---|---|
committer | Dani Megert | 2004-05-14 13:18:43 +0000 |
commit | d6006daf6c1e8d028d912c80ea5a050f1264af57 (patch) | |
tree | a66baf1abf9f642f12a546741efbdeeffed944db /org.eclipse.jface.text/src/org | |
parent | 13b0107664af9bae4f7ff201657a92bbce21d9d6 (diff) | |
download | eclipse.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.java | 61 |
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 |