diff options
author | Markus Keller | 2015-12-06 21:50:56 +0000 |
---|---|---|
committer | Markus Keller | 2015-12-06 21:50:56 +0000 |
commit | 0d555d0f718246a3d98a4f027a532407bb56ba0e (patch) | |
tree | 8504bb98a398f4b7c55cedd34eee8eadd6897e47 | |
parent | cbc4ba46f507b96b74b0f2c190cb2b8b4fe55f8b (diff) | |
download | eclipse.platform.text-0d555d0f718246a3d98a4f027a532407bb56ba0e.tar.gz eclipse.platform.text-0d555d0f718246a3d98a4f027a532407bb56ba0e.tar.xz eclipse.platform.text-0d555d0f718246a3d98a4f027a532407bb56ba0e.zip |
Bug 483747: Status error message gets lost when clicking line number rulerI20151207-0800I20151206-2000
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java | 9 | ||||
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java | 6 |
2 files changed, 13 insertions, 2 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java index adf4e39098f..a22f2f103b7 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java @@ -1534,6 +1534,11 @@ public class TextViewer extends Viewer implements */ private IRegion fLastSentPostSelectionChange; /** + * <code>true</code> iff a post selection event must be fired even if the selection didn't change + * @since 3.11 + */ + private boolean fFireEqualPostSelectionChange; + /** * The set of registered editor helpers. * @since 3.1 */ @@ -2533,6 +2538,7 @@ public class TextViewer extends Viewer implements return; fNumberOfPostSelectionChangedEvents[0]++; + fFireEqualPostSelectionChange|= fireEqualSelection; display.timerExec(getEmptySelectionChangedEventDelay(), new Runnable() { final int id= fNumberOfPostSelectionChangedEvents[0]; @Override @@ -2543,8 +2549,9 @@ public class TextViewer extends Viewer implements Point selection= fTextWidget.getSelectionRange(); if (selection != null) { IRegion r= widgetRange2ModelRange(new Region(selection.x, selection.y)); - if (fireEqualSelection || (r != null && !r.equals(fLastSentPostSelectionChange)) || r == null) { + if (fFireEqualPostSelectionChange || (r != null && !r.equals(fLastSentPostSelectionChange)) || r == null) { fLastSentPostSelectionChange= r; + fFireEqualPostSelectionChange= false; firePostSelectionChanged(selection.x, selection.y); } } diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java index 381680a78c2..4513e962a58 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java @@ -179,7 +179,11 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn { } else { fStartLineNumber= lineNumber; fStartLineOffset= document.getLineInformation(fStartLineNumber).getOffset(); - fCachedTextViewer.setSelectedRange(fStartLineOffset, 0); + Point currentSelection= fCachedTextViewer.getSelectedRange(); + // avoid sending unnecessary selection event, see https://bugs.eclipse.org/483747 + if (currentSelection.x != fStartLineOffset || currentSelection.y != 0) { + fCachedTextViewer.setSelectedRange(fStartLineOffset, 0); + } } fCachedViewportSize= getVisibleLinesInViewport(); |