Fix the candidate window position of fcitx5 which does't work well with winit's set_ime_cursor_area()
This commit is contained in:
parent
716c75da3f
commit
a9bcb00529
1 changed files with 12 additions and 2 deletions
|
|
@ -322,9 +322,19 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.ime_state != Some((cursor, purpose)) {
|
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(
|
self.raw.set_ime_cursor_area(
|
||||||
LogicalPosition::new(cursor.x, cursor.y).into(),
|
LogicalPosition::new(cursor.x, cursor_y).into(),
|
||||||
LogicalSize::new(cursor.width, cursor.height).into(),
|
LogicalSize::new(cursor.width, cursor_height).into(),
|
||||||
);
|
);
|
||||||
self.raw.set_ime_purpose(conversion::ime_purpose(purpose));
|
self.raw.set_ime_purpose(conversion::ime_purpose(purpose));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue