Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Keller2015-12-06 21:50:56 +0000
committerMarkus Keller2015-12-06 21:50:56 +0000
commit0d555d0f718246a3d98a4f027a532407bb56ba0e (patch)
tree8504bb98a398f4b7c55cedd34eee8eadd6897e47
parentcbc4ba46f507b96b74b0f2c190cb2b8b4fe55f8b (diff)
downloadeclipse.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.java9
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java6
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();

Back to the top