Fixed bug 51840: [api] clarify (I)TextSelection's use of offsets and lengths <= 0
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 a4ee096..bba65e6 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
@@ -2550,6 +2550,10 @@
 	 */
 	protected void fireSelectionChanged(int offset, int length) {
 		if (redraws()) {
+			if (length < 0) {
+				length= -length;
+				offset= offset + length;
+			}
 			IRegion r= widgetRange2ModelRange(new Region(offset, length));
 			if ((r != null && !r.equals(fLastSentSelectionChange)) || r == null)  {
 				fLastSentSelectionChange= r;