Alexandre Julliard pushed to branch master at wine / wine
Commits: f82c6944 by Byeong-Sik Jeon at 2025-04-17T12:16:31+02:00 win32u: Add more CompAttr, CompClause implementation using cursor_begin, cursor_end concept.
If CompAttr and CompClause are properly configured, Japanese input will be more comfortable.
Inspired by cursor_begin and cursor_end from Wayland zwp_text_input_v3:: preedit_string, I extended the cursor_pos concept as follows:
cursor_pos = MAKELONG( cursor_begin, cursor_end );
ime_to_tascii_ex() uses this to construct Compttr, CompClause. MS Windows native CompStrAttr, CompStrClause is a bit more complicated than this, but the concept is useful enough.
It requires additional implementation in the Wine ime_ui_window proc and richedit control. However, it is useful for applications that inline ime composition string.
This can be tested with MS Office Word, Excel. LANG=ja_JP.UTF-8 wine EXCEL.EXE
Test key sequences: - 'n-i-h-o-n-g-o-n-o-m-o-j-i-d-e-s-u-.-SPACE'. - And, RIGHT, LEFT, Shift+LEFT, Shift+RIGHT, ESC, SPACE, UP, DOWN, etc.
- - - - - a78484fb by Byeong-Sik Jeon at 2025-04-17T12:16:33+02:00 winewayland: Extend cursor_pos using cursor_begin, cursor_end.
- - - - - a640e594 by Byeong-Sik Jeon at 2025-04-17T12:16:33+02:00 winemac: Extend cursor_pos using cursor_begin, cursor_end.
- - - - - 79c16584 by Byeong-Sik Jeon at 2025-04-17T12:16:33+02:00 winex11: Extend cursor_pos using cursor_begin, cursor_end.
When tested on ibus, fcitx5, and uim, the applicable bit is XIMReverse. Since these always have chg_first == 0, I referenced the libX11 documentation for applying chg_first.
- - - - - 577a7f6c by Byeong-Sik Jeon at 2025-04-17T12:16:34+02:00 winex11: Update only when caret pos changed in xic_preedit_caret.
- - - - -
6 changed files:
- dlls/win32u/imm.c - dlls/winemac.drv/cocoa_window.m - dlls/winemac.drv/event.c - dlls/winemac.drv/macdrv_cocoa.h - dlls/winewayland.drv/wayland_text_input.c - dlls/winex11.drv/xim.c
View it on GitLab: https://gitlab.winehq.org/wine/wine/-/compare/f5087f65b9f235f3e758caca0df689...