diff --git a/src/gui/widgets/text_box_base.cpp b/src/gui/widgets/text_box_base.cpp index 7d55eb9985e1..42ec49f67e91 100644 --- a/src/gui/widgets/text_box_base.cpp +++ b/src/gui/widgets/text_box_base.cpp @@ -382,6 +382,12 @@ void text_box_base::handle_key_backspace(SDL_Keymod /*modifier*/, bool& handled) delete_selection(); } else if(selection_start_) { delete_char(true); + if(ime_in_progress_) { + if(utf8::size(text_.text()) <= utf8::size(text_cached_)) { + ime_in_progress_ = false; + ime_length_ = 0; + } + } } fire(event::NOTIFY_MODIFIED, *this, nullptr); } @@ -395,6 +401,12 @@ void text_box_base::handle_key_delete(SDL_Keymod /*modifier*/, bool& handled) delete_selection(); } else if(selection_start_ < text_.get_length()) { delete_char(false); + if(ime_in_progress_) { + if(utf8::size(text_.text()) <= utf8::size(text_cached_)) { + ime_in_progress_ = false; + ime_length_ = 0; + } + } } fire(event::NOTIFY_MODIFIED, *this, nullptr); }