0009 조합이 자기 IME UI 창 때문에 취소됨
From 카카오톡 on Wine
Jump to navigationJump to search
0008과 같은 증상을 쫓다가 걸려 나온 것으로, 조합이 오는 족족 취소되고 있었습니다.
preedit "ㅇ" → post_ime_update
text_input_leave ← 조합 취소
text_input_enter hwnd 0x1e00dc ← IME UI 창이 포커스를 가져감
text_input_leave
text_input_enter hwnd 0x700e8 ← 돌아옴
0x1e00dc는 Wine 자신의 IME UI 창으로, imm32가
CreateWindowExW(WS_EX_TOOLWINDOW, ..., 0, 0, 1, 1)로 만드는
1x1짜리입니다.
그 창이 0005 때문에 독립 toplevel을 받고 있었습니다.
0005는 트레이 메뉴를 보이게 하려고 주인이 화면에 없는 owned 창에 자기
표면을 주도록 한 것인데, 1x1짜리 IME UI 창도 공교롭게 그 조건에
맞았습니다. 그래서 toplevel이 되고, 컴포지터가 거기에 포커스를 주고, 앱이
조합하고 있던 text input에 leave가 날아가 글자가
죽습니다.
그릴 것이 있는 창만 올리도록 고쳤습니다. toplevel은 컴포지터에게 키보드를 달라는 뜻인데, 넓이가 없는 창은 그것으로 읽을 것이 없기 때문입니다.
다만 이것만으로는 증상이 고쳐지지 않아서 한글은 여전히 들어가지 않았습니다. 진짜 원인은 0010입니다.