# HG changeset patch # User Frank Benoit # Date 1219456506 -7200 # Node ID 7d431a32f71edbe1099b1a9928cf8eee14ef8e34 # Parent 4289aa6cbc0ccd0852015e5af1b5091eec5ae741 Fix: IME ole call and string processing. diff -r 4289aa6cbc0c -r 7d431a32f71e dwt/widgets/IME.d --- a/dwt/widgets/IME.d Fri Aug 22 18:06:47 2008 +0200 +++ b/dwt/widgets/IME.d Sat Aug 23 03:55:06 2008 +0200 @@ -193,11 +193,11 @@ hr = OS.VtblCall (3, pProvider, cast(int)&pEnum); if (hr is OS.S_OK) { void* pDispInfo; - TF_DISPLAYATTRIBUTE* tempPda; + TF_DISPLAYATTRIBUTE* tempPda = new TF_DISPLAYATTRIBUTE(); /* pEnum.Next () */ while ((hr = OS.VtblCall (4, pEnum, 1, cast(int) &pDispInfo, 0 )) is OS.S_OK) { /* pDispInfo.GetAttributeInfo(); */ - OS.VtblCall (5, pDispInfo, cast(int)&tempPda); + OS.VtblCall (5, pDispInfo, cast(int)cast(void*)tempPda); /* pDispInfo.Release () */ OS.VtblCall (2, pDispInfo); if (tempPda.bAttr is attInfo) { @@ -405,9 +405,9 @@ Display display = this.display; display.lastKey = 0; display.lastVirtual = display.lastNull = display.lastDead = false; - length_ = chars.length; + length_ = chars.codePointCount; for (int i = 0; i < length_; i++) { - char c = chars.charAt (i); + dchar c = chars[ i .. $ ].firstCodePoint(); display.lastAscii = c; event = new Event (); event.character = c;