diff options
author | Felipe Heidrich <fheidric> | 2005-10-19 18:45:11 +0000 |
---|---|---|
committer | Felipe Heidrich <fheidric> | 2005-10-19 18:45:11 +0000 |
commit | 941307c628dccdf938b18fa9e50b5222fa03cf9a (patch) | |
tree | 9d86586be0d12c1b2eca7a15b353af1b1a524152 /bundles | |
parent | 0bb7f6c8c4bfb7f31f2639fdcb19ab84654502dc (diff) | |
download | eclipse.platform.swt-941307c628dccdf938b18fa9e50b5222fa03cf9a.tar.gz eclipse.platform.swt-941307c628dccdf938b18fa9e50b5222fa03cf9a.tar.xz eclipse.platform.swt-941307c628dccdf938b18fa9e50b5222fa03cf9a.zip |
*** empty log message ***
Diffstat (limited to 'bundles')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java | 13 | ||||
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java | 10 |
2 files changed, 17 insertions, 6 deletions
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 65ffc6f615..1db9fb0ebd 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 @@ -835,9 +835,14 @@ public Point getLocation (int offset, boolean trailing) { if (trailing || offset == length) width += run.width; } else { if (trailing) offset++; - char[] chars = new char[offset - run.start]; - text.getChars(run.start, offset, chars, 0); - width += stringWidth(run, chars); + if (run.style != null && run.style.metrics != null) { + GlyphMetrics metrics = run.style.metrics; + width += metrics.width * (offset - run.start); + } else { + char[] chars = new char[offset - run.start]; + text.getChars(run.start, offset, chars, 0); + width += stringWidth(run, chars); + } } result = new Point(width, lineY[line]); break; @@ -1253,7 +1258,7 @@ void place (StyleItem run) { if (run.length == 0) return; if (run.style != null && run.style.metrics != null) { GlyphMetrics glyphMetrics = run.style.metrics; - run.width = glyphMetrics.width; + run.width = glyphMetrics.width * run.length; run.baseline = glyphMetrics.ascent; run.height = glyphMetrics.ascent + glyphMetrics.descent; } else { diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java index a96d44b907..9193516693 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java @@ -771,7 +771,10 @@ public Rectangle getBounds (int start, int end) { int runTrail = run.x + run.width; if (run.start <= start && start < runEnd) { int cx = 0; - if (!run.tab) { + if (run.style != null && run.style.metrics != null) { + GlyphMetrics metrics = run.style.metrics; + cx = metrics.width * (start - run.start); + } else if (!run.tab) { int[] piX = new int[1]; int advances = run.justify != 0 ? run.justify : run.advances; OS.ScriptCPtoX(start - run.start, false, run.length, run.glyphCount, run.clusters, run.visAttrs, advances, run.analysis, piX); @@ -785,7 +788,10 @@ public Rectangle getBounds (int start, int end) { } if (run.start <= end && end < runEnd) { int cx = run.width; - if (!run.tab) { + if (run.style != null && run.style.metrics != null) { + GlyphMetrics metrics = run.style.metrics; + cx = metrics.width * (end - run.start + 1); + } else if (!run.tab) { int[] piX = new int[1]; int advances = run.justify != 0 ? run.justify : run.advances; OS.ScriptCPtoX(end - run.start, true, run.length, run.glyphCount, run.clusters, run.visAttrs, advances, run.analysis, piX); |