changeset 246:f08216d53777

Fix merge bug in TextLayout
author Frank Benoit <benoit@tionex.de>
date Mon, 19 May 2008 17:08:39 +0200
parents 239b9a56bd5f
children da992144273f
files dwt/dwthelper/utils.d dwt/graphics/TextLayout.d
diffstat 2 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/dwthelper/utils.d	Mon May 19 14:34:47 2008 +0200
+++ b/dwt/dwthelper/utils.d	Mon May 19 17:08:39 2008 +0200
@@ -443,7 +443,8 @@
                 i+=4;
             }
             else{
-                tango.text.convert.Utf.onUnicodeError( "invalid utf8 input "~str, i );
+                Trace.formatln( "invalid utf8 characters: {:X2}", cast(ubyte[]) str );
+                tango.text.convert.Utf.onUnicodeError( "invalid utf8 input", i );
             }
             searchRelCp--;
         }
--- a/dwt/graphics/TextLayout.d	Mon May 19 14:34:47 2008 +0200
+++ b/dwt/graphics/TextLayout.d	Mon May 19 17:08:39 2008 +0200
@@ -77,8 +77,14 @@
     // RTL_MARK RIGHT-TO-LEFT MARK
     // ZWS      ZERO WIDTH SPACE
     // ZWNBS    ZERO WIDTH NO-BREAK SPACE
-    static const dchar LTR_MARK = '\u200E', RTL_MARK = '\u200F', ZWS = '\u200B', ZWNBS = '\uFEFF';
-    static const String STR_LTR_MARK = "\u200E", STR_RTL_MARK = "\u200F", STR_ZWS = "\u200B", STR_ZWNBS = "\uFEFF";
+    static const dchar LTR_MARK      = '\u200E'; // x"E2 80 8E" LEFT-TO-RIGHT MARK
+    static const dchar RTL_MARK      = '\u200F'; // x"E2 80 8F" RIGHT-TO-LEFT MARK
+    static const dchar ZWS           = '\u200B'; // x"E2 80 8B" ZERO WIDTH SPACE
+    static const dchar ZWNBS         = '\uFEFF'; // x"EF BB BF" ZERO WIDTH NO-BREAK SPACE
+    static const String STR_LTR_MARK = "\u200E";
+    static const String STR_RTL_MARK = "\u200F";
+    static const String STR_ZWS      = "\u200B";
+    static const String STR_ZWNBS    = "\uFEFF";
 
 /**
  * Constructs a new instance of this class on the given device.
@@ -159,9 +165,7 @@
             oldPos = pos;
             lineIndex++;
         }
-        segmentsText.getChars(oldPos, segementsLength, chars,  oldPos + lineIndex * 2);
-        chars[ oldPos + lineIndex*6 .. oldPos + lineIndex*6 + segementsLength - oldPos ] =
-            segmentsText[ oldPos .. segementsLength ];
+        segmentsText.getChars(oldPos, segementsLength, chars,  oldPos + lineIndex * 6);
         String buffer = chars;// Converter.wcsToMbcs(null, chars, false);
 
         OS.pango_layout_set_text (layout, buffer.ptr, buffer.length);