Mercurial > projects > dwt-addons
diff dwtx/jface/internal/text/html/HTMLTextPresenter.d @ 162:1a5b8f8129df
...
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 08 Sep 2008 00:51:37 +0200 |
parents | 7926b636c282 |
children |
line wrap: on
line diff
--- a/dwtx/jface/internal/text/html/HTMLTextPresenter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/html/HTMLTextPresenter.d Mon Sep 08 00:51:37 2008 +0200 @@ -24,6 +24,7 @@ import dwt.dwthelper.utils; import dwtx.dwtxhelper.Collection; +import dwtx.dwtxhelper.StringReader; import dwt.custom.StyleRange; import dwt.graphics.Drawable; @@ -53,7 +54,7 @@ private bool fEnforceUpperLineLimit; public this(bool enforceUpperLineLimit) { - super(); +// super(); fEnforceUpperLineLimit= enforceUpperLineLimit; } @@ -105,9 +106,10 @@ int length= line.length(); int i= 0; - while (i < length && Character.isWhitespace(line.charAt(i))) ++i; + while (i < length && Character.isWhitespace(line.getRelativeCodePoint(i,0))) + i += line.getRelativeCodePointOffset(i,1); - return (i is length ? line : line.substring(0, i)) + " "; //$NON-NLS-1$ + return (i is length ? line : line.substring(0, i)) ~ " "; //$NON-NLS-1$ } /** @@ -133,7 +135,7 @@ try { StringBuffer buffer= new StringBuffer(); - int maxNumberOfLines= Math.round(maxHeight / gc.getFontMetrics().getHeight()); + int maxNumberOfLines= cast(int) Math.round(maxHeight / gc.getFontMetrics().getHeight()); fCounter= 0; LineBreakingReader reader= new LineBreakingReader(createReader(hoverInfo, presentation), gc, maxWidth); @@ -197,22 +199,24 @@ int length= buffer.length(); int end= length -1; - while (end >= 0 && Character.isWhitespace(buffer.charAt(end))) - -- end; - if (end is -1) + while (end >= 0 && Character.isWhitespace(buffer.slice().getRelativeCodePoint( end, -1 ))) + end += buffer.slice().getRelativeCodePointOffset( end, -1 ); + + if (end <= -1) return ""; //$NON-NLS-1$ - if (end < length -1) - buffer.delete_(end + 1, length); + if (end < buffer.slice().getAbsoluteCodePointOffset( length, -1 )) + buffer.truncate(buffer.slice().getAbsoluteCodePointOffset( end, 1)); else end= length; int start= 0; - while (start < end && Character.isWhitespace(buffer.charAt(start))) - ++ start; + while (start < end && Character.isWhitespace(buffer.slice().getRelativeCodePoint(start, 0))) + start += buffer.slice().getRelativeCodePointOffset( start, 1 ); - buffer.delete_(0, start); + buffer.select(0, start); + buffer.remove(); presentation.setResultWindow(new Region(start, buffer.length())); return buffer.toString(); }