diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index 91a5623527b..866b8dc2448 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -132,6 +132,8 @@ void LineEdit::_update_ime_window_position() { if (get_window()->get_embedder()) { pos += get_viewport()->get_popup_base_transform().get_origin(); } + // Take into account the window's transform. + pos = get_window()->get_screen_transform().xform(pos); // The window will move to the updated position the next time the IME is updated, not immediately. DisplayServer::get_singleton()->window_set_ime_position(pos, wid); } diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 38d2a851b6e..23c74522435 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -3427,6 +3427,8 @@ void TextEdit::_update_ime_window_position() { if (get_window()->get_embedder()) { pos += get_viewport()->get_popup_base_transform().get_origin(); } + // Take into account the window's transform. + pos = get_window()->get_screen_transform().xform(pos); // The window will move to the updated position the next time the IME is updated, not immediately. DisplayServer::get_singleton()->window_set_ime_position(pos, wid); }