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();
     }