In winemac.drv, 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 comp_str is discarded when the next ime update call occurs, so it is only valid when the last ime update call has the comp_str. - The result_str is retained even if the next ime update call occurs. - If the next ime update call has the result_str, it is appended after the previous result_str. (e.g. 'r-k-1' or 'r-k-<SPACE>') 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>' -- v2: win32u: Preserve result string from multiple WINE_IME_POST_UPDATE call during ImeProcessKey. https://gitlab.winehq.org/wine/wine/-/merge_requests/7766