Mercurial > projects > dwt-linux
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);