b52ff2d6
by Byeong-Sik Jeon at 2025-04-09T12:22:42+02:00
win32u: Preserve result string from multiple WINE_IME_POST_UPDATE calls during ImeProcessKey.
In winemac.drv, there are multiple ime update calls occur during ImeProcessKey.
These multiple ime update calls need to be properly merged into ‘data->update’.
However, currently win32u/imm.c::post_ime_update() only keeps the last ime
update call.
Valid rules are:
- The previous comp_str is discarded when the new ime update call occurs,
so it is only valid if the last ime update call comp_str is not NULL.
- The previous result_str is kept if the new ime update call result_str is NULL.
- If both the previous and the new ime update call result_str are not NULL, then
concatenate them.
Test key sequences are:
- "Japanese Romanji" : 'nihongo-SPACE-n'
- "Korean 2-Set Keyboard" : 'r-k-s-k'
- "Korean 2-Set Keyboard" : 'r-k-1" or 'r-k-SPACE'