You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
Sometimes can not type IME CompositionEnd characters.
To Reproduce
Use 'PinYin' input, type some words, then type in some other character such as 【 】 ……
Expected behavior
Type in any characters, including CompositionEnd characters.
Screenshots
IME-BUG.mp4
After typing !@, can not type any CompositionEnd character like 【】。,;。
I'm using version 0.27.2, i see branch master has changed CompositionEnd to ImeEvent::Commit, but this bug still exists.
Here is why this happens. /crates/egui/src/widgets/text_edit/builder.rs L974 if !prediction.is_empty() && cursor_range.secondary.ccursor.index == state.ime_cursor_range.secondary.ccursor.index
this prediction make sure cursor_range.secondary.ccursor.index equals state.ime_cursor_range.secondary.ccursor.index .
but when input CompositionEnd only characters after some other characters, cursor_range.secondary.ccursor.index is equals to the length of previous characters, and state.ime_cursor_range.secondary.ccursor.index equals to 0.
Below is my solution:
IME-BUGFIX.mp4
If we check this two cursors.index only when ime_state equals true which meanings we triggered CompositionStart first and currently continue typing some IME characters. if we trigger CompositionEnd first, there is no need to check cursor.index.
Actually, i don't know why need to check cursor_range.secondary.ccursor.index == state.ime_cursor_range.secondary.ccursor.index, can you tell me the reason. Thanks 😊
Desktop (please complete the following information):
OS: Windows11
The text was updated successfully, but these errors were encountered:
In the Master version, everything has been modified normally.
It will be applied to all next versions.
cursor_range.secondary.ccursor.index == state.ime_cursor_range.secondary.ccursor.index
The reason for checking is because the characters you are typing may be copied somewhere else.
Describe the bug
Sometimes can not type IME CompositionEnd characters.
To Reproduce
Use 'PinYin' input, type some words, then type in some other character such as
【 】 ……
Expected behavior
Type in any characters, including CompositionEnd characters.
Screenshots
IME-BUG.mp4
After typing
!@
, can not type any CompositionEnd character like【】。,;
。I'm using version 0.27.2, i see branch
master
has changedCompositionEnd
toImeEvent::Commit
, but this bug still exists.Here is why this happens.
/crates/egui/src/widgets/text_edit/builder.rs
L974if !prediction.is_empty() && cursor_range.secondary.ccursor.index == state.ime_cursor_range.secondary.ccursor.index
this prediction make sure
cursor_range.secondary.ccursor.index
equalsstate.ime_cursor_range.secondary.ccursor.index
.but when input CompositionEnd only characters after some other characters,
cursor_range.secondary.ccursor.index
is equals to the length of previous characters, andstate.ime_cursor_range.secondary.ccursor.index
equals to0
.Below is my solution:
IME-BUGFIX.mp4
If we check this two
cursors.index
only when ime_state equals true which meanings we triggeredCompositionStart
first and currently continue typing someIME
characters. if we triggerCompositionEnd
first, there is no need to checkcursor.index
.Actually, i don't know why need to check
cursor_range.secondary.ccursor.index == state.ime_cursor_range.secondary.ccursor.index
, can you tell me the reason. Thanks 😊Desktop (please complete the following information):
The text was updated successfully, but these errors were encountered: