From a0c7bf4d373b0d81f9c977400da33321fa95769d Mon Sep 17 00:00:00 2001 From: Felipe Heidrich Date: Fri, 28 May 2004 23:30:14 +0000 Subject: critical bug in motif and emulated --- .../emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java | 9 ++++++++- .../Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/bundles/org.eclipse.swt/Eclipse SWT/emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java b/bundles/org.eclipse.swt/Eclipse SWT/emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java index 60d4abf34d..03d1a9985a 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java @@ -857,7 +857,14 @@ public int getOffset (int x, int y, int[] trailing) { } } if (x < 0) return lineOffset[line]; - if (x > lineWidth[line]) return lineOffset[line + 1] - 1; + if (x > lineWidth[line]) { + if (lineOffset[line + 1] > lineOffset[line]) { + if (trailing != null) trailing[0] = 1; + return lineOffset[line + 1] - 1; + } + if (trailing != null) trailing[0] = 0; + return lineOffset[line + 1]; + } StyleItem[] lineRuns = runs[line]; int width = 0; for (int i = 0; i < lineRuns.length; i++) { diff --git a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java index e71580d083..a19b9bb769 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java @@ -892,7 +892,14 @@ public int getOffset (int x, int y, int[] trailing) { } } if (x < 0) return lineOffset[line]; - if (x > lineWidth[line]) return lineOffset[line + 1] - 1; + if (x > lineWidth[line]) { + if (lineOffset[line + 1] > lineOffset[line]) { + if (trailing != null) trailing[0] = 1; + return lineOffset[line + 1] - 1; + } + if (trailing != null) trailing[0] = 0; + return lineOffset[line + 1]; + } StyleItem[] lineRuns = runs[line]; int width = 0; for (int i = 0; i < lineRuns.length; i++) { -- cgit