Skip to content

Commit 45875c2

Browse files
authored
Merge pull request #103059 from bruvzg/ime_update
[IME] Do not redraw and move caret on IME update w/o text/position changes.
2 parents 70eb62f + 84a2e3f commit 45875c2

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

scene/gui/line_edit.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -1377,8 +1377,14 @@ void LineEdit::_notification(int p_what) {
13771377

13781378
case MainLoop::NOTIFICATION_OS_IME_UPDATE: {
13791379
if (editing) {
1380-
ime_text = DisplayServer::get_singleton()->ime_get_text();
1381-
ime_selection = DisplayServer::get_singleton()->ime_get_selection();
1380+
const String &new_ime_text = DisplayServer::get_singleton()->ime_get_text();
1381+
const Vector2i &new_ime_selection = DisplayServer::get_singleton()->ime_get_selection();
1382+
if (ime_text == new_ime_text && ime_selection == new_ime_selection) {
1383+
break;
1384+
}
1385+
1386+
ime_text = new_ime_text;
1387+
ime_selection = new_ime_selection;
13821388

13831389
if (!ime_text.is_empty()) {
13841390
selection_delete();

scene/gui/text_edit.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -1633,9 +1633,15 @@ void TextEdit::_notification(int p_what) {
16331633

16341634
case MainLoop::NOTIFICATION_OS_IME_UPDATE: {
16351635
if (has_focus()) {
1636+
const String &new_ime_text = DisplayServer::get_singleton()->ime_get_text();
1637+
const Vector2i &new_ime_selection = DisplayServer::get_singleton()->ime_get_selection();
1638+
if (ime_text == new_ime_text && ime_selection == new_ime_selection) {
1639+
break;
1640+
}
1641+
16361642
bool had_ime_text = has_ime_text();
1637-
ime_text = DisplayServer::get_singleton()->ime_get_text();
1638-
ime_selection = DisplayServer::get_singleton()->ime_get_selection();
1643+
ime_text = new_ime_text;
1644+
ime_selection = new_ime_selection;
16391645

16401646
if (!had_ime_text && has_ime_text()) {
16411647
_cancel_drag_and_drop_text();

0 commit comments

Comments
 (0)