Reported by nvdakor on 2013-01-04 02:10
In a webpage, when trying to find some text which is written in languages other than English, NVDA does not find it. Specifically, when opening Find dialog (CTRL+NvDA+F) and after switching input languages to ones other than English (for example, Korean), after typing some text, NvDA inserts odd things.
Steps to reproduce:
Go to a page that you know has non-English text (for example, ko.wikipedia.org, the Korean Wikipedia page).
after the page loads, try finding "Tools" heading (written in Korean). To do this, from top of the page, press CTRL+NvDA+F, then switch to Korean layout, then type "ehrn".
Before you press ENTER, review what you've typed. NVDA inserts some odd characters such as accents. Then when you press ENTER, NVDA does not find the text, since it inserted something else.
From tests I did, it appears NVDA Find dialog is not good at recognizing UTF-8 or Unicode chars. Thanks.
Comment 1 by nvdakor on 2013-03-15 08:14
Jamie says it is not WX. Ironically, the solution was to switch input language (the keyboard language itself, not input methods in a given lang) once NVDA starts. Then find function behaves normally. Strange, but it is a huge relief for now.
Comment 3 by jteh on 2013-03-15 08:20
For non-Koreans testing this, note that you need to hit right alt to switch to native input to be able to type Korean. You can try typing "ehrn". It should produce "도구".
Comment 6 by mdcurran on 2013-05-28 02:05
This bug is caused by one or more calls to ImmLockIMC from imm32.dll. This call is made as part of the check to see if this is a valid IME message. If I remove these calls and just return true (to say its valid) everything works and the bug goes away.
ImmLockIMC is not documented at all for Windows Desktop, but only for Windows CE. I shall have to converse with Timothy Lee about this as this part was his code.
I would hope that we could just get away with checking that the window is not NULL and that is it, rather than using this rather lengthy, undocumented, and now buggy, code.
Comment 7 by Michael Curran <mick@... on 2013-05-28 04:30
NVDAHelper IME support: only call hasValidIMEContext for specific IME window messages, rather than for all window messages. Fixes #2909
This stops ImmLockIMC from being called for window messages such as wm_keydown which was causing some corruption of typed characters in certain situations such as when typing in NVDA's process with Korean or Japanese when it was the default IME.