This is a multi-part message in MIME format.

------=_NextPart_000_0046_01C65CB5.27860B90
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi All,

There is a big problem with dead keys handling in the Layout Manager of =
CE 5.0.
The problem comes from the logic in the GetCharacters function =
(laymgr.cpp), wich forgets previously entered dead keys.

if (wch =3D=3D WCH_NONE) {
.=20
.
}
else if (wch =3D=3D WCH_DEAD) {
.=20
.
}
else if (wch =3D=3D WCH_LGTR) {
.
.
}
else {
//+FIX
if ( (pili->il.pDeadKey !=3D NULL) &&
(pili->wchDeadChar !=3D 0) ) {
cchValid =3D ProcessDeadKeys(&pili->wchDeadChar, =
pili->il.pDeadKey,=20
wch, pChars, cChars, ShiftFlags);
}
else
//-FIX
WriteToCharBuffer(wch, cChars, pChars, &cchValid);
}
}

I fixed the bug by duplicating a code that reside in the "if (wch =
=3D=3D WCH_DEAD)" branch. I suspect one can do a better fix but this one =
works, at least for my French Keyboard.

Remi

------=_NextPart_000_0046_01C65CB5.27860B90
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2802" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT size=3D2>Hi All,</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2>There is a big problem with dead keys handling in =
the Layout=20
Manager of CE 5.0.</FONT></DIV>
<DIV><FONT size=3D2>The problem comes from the logic=20
in&nbsp;the&nbsp;GetCharacters function (laymgr.cpp), wich forgets =
previously=20
entered dead keys.</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>if (wch =3D=3D WCH_NONE) =
{</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; .=20
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp;=20
.</FONT></DIV></FONT></DIV></FONT><FONT face=3D"Courier New" =
size=3D2>}</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>else if (wch =3D=3D WCH_DEAD) =
{</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; .=20
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp;=20
.</FONT></DIV></FONT></DIV>}</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>else if (wch =3D=3D WCH_LGTR) =
{</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; .
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp;=20
.</FONT></DIV></FONT></DIV></FONT><FONT face=3D"Courier New" =
size=3D2>}</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>else {</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>//+FIX</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; if (=20
(pili-&gt;il.pDeadKey !=3D NULL) &amp;&amp;</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;=20
(pili-&gt;wchDeadChar !=3D 0) ) {</FONT></DIV>
<DIV><FONT face=3D"Courier New" =
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
cchValid =3D ProcessDeadKeys(&amp;pili-&gt;wchDeadChar, =
pili-&gt;il.pDeadKey,=20
</FONT></DIV>
<DIV><FONT face=3D"Courier New"=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;wch,=20
pChars, cChars, ShiftFlags);</FONT></DIV>
<DIV><FONT face=3D"Courier New" =
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;}</FONT></DIV>
<DIV><FONT face=3D"Courier New" =
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;else</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>//-FIX</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; =
WriteToCharBuffer(wch,=20
cChars, pChars, &amp;cchValid);</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>}</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>}</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2>&nbsp;I fixed the bug by duplicating a code that =
reside in the=20
"if (wch =3D=3D WCH_DEAD)" branch. I suspect one can do a better fix but =
this one=20
works, at least for my French Keyboard.</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2>Remi<BR></FONT></DIV></BODY></HTML>

------=_NextPart_000_0046_01C65CB5.27860B90--