# HG changeset patch # User Frank Benoit # Date 1204477947 -3600 # Node ID 285aa0c31277401c3d12c7ef4bf3eeadff29cc73 # Parent 5e10b057a92380c460d7119dc8c8c12fc32804be Fix: utf8 problem in key event diff -r 5e10b057a923 -r 285aa0c31277 dwt/widgets/Widget.d --- a/dwt/widgets/Widget.d Sun Mar 02 18:09:32 2008 +0100 +++ b/dwt/widgets/Widget.d Sun Mar 02 18:12:27 2008 +0100 @@ -1283,12 +1283,15 @@ } while (index < chars.length) { Event event = new Event (); - if (keyEvent !is null && chars.length <= 1) { + //PORTING take care of utf8 + if (keyEvent !is null && chars.codepointCount() <= 1) { setKeyState (event, keyEvent); } else { setInputState (event, state); } - event.character = chars [index]; + //PORTING take care of utf8 + int incr; + event.character = firstCodePoint( chars [index..$], incr ); sendEvent (type, event); /* @@ -1301,8 +1304,15 @@ if (ptr !is null) OS.gdk_event_free (ptr); return null; } - if (event.doit) chars [count++] = chars [index]; - index++; + + //PORTING take care of utf8 + if (event.doit) { + for( int i = 0; i < incr; i++ ){ + chars [count+i] = chars [index+i]; + } + count+=incr; + } + index+=incr; } if (ptr !is null) OS.gdk_event_free (ptr); if (count is 0) return null;