summaryrefslogtreecommitdiffstats
path: root/bundles
diff options
context:
space:
mode:
authorFelipe Heidrich <fheidric>2005-10-19 18:45:11 +0000
committerFelipe Heidrich <fheidric>2005-10-19 18:45:11 +0000
commit941307c628dccdf938b18fa9e50b5222fa03cf9a (patch)
tree9d86586be0d12c1b2eca7a15b353af1b1a524152 /bundles
parent0bb7f6c8c4bfb7f31f2639fdcb19ab84654502dc (diff)
downloadeclipse.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.java13
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java10
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);