Fix the candidate window position of fcitx5 which does't work well with winit's set_ime_cursor_area()

This commit is contained in:
KENZ 2026-02-22 10:36:14 +09:00 committed by Ashley Wulber
parent 716c75da3f
commit a9bcb00529

View file

@ -322,9 +322,19 @@ where
}
if self.ime_state != Some((cursor, purpose)) {
// Specify only the bottom-left position of the cursor on Linux
// because fcitx5 doesn't work well with cursor areas of
// the top-left position and height.
// The candidate window hides the composing text (a.k.a. preedit).
let (cursor_y, cursor_height) =
if cfg!(not(any(target_os = "windows", target_os = "macos"))) {
(cursor.y + cursor.height, 0.0)
} else {
(cursor.y, cursor.height)
};
self.raw.set_ime_cursor_area(
LogicalPosition::new(cursor.x, cursor.y).into(),
LogicalSize::new(cursor.width, cursor.height).into(),
LogicalPosition::new(cursor.x, cursor_y).into(),
LogicalSize::new(cursor.width, cursor_height).into(),
);
self.raw.set_ime_purpose(conversion::ime_purpose(purpose));