Skip to content

Commit 36293a2

Browse files
committed
Fix renaming nodes on X11
1 parent 4254946 commit 36293a2

File tree

3 files changed

+5
-9
lines changed

3 files changed

+5
-9
lines changed

platform/linuxbsd/x11/display_server_x11.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2998,11 +2998,7 @@ bool DisplayServerX11::window_is_focused(WindowID p_window) const {
29982998

29992999
const WindowData &wd = windows[p_window];
30003000

3001-
Window focused_window;
3002-
int focus_ret_state;
3003-
XGetInputFocus(x11_display, &focused_window, &focus_ret_state);
3004-
3005-
return wd.x11_window == focused_window;
3001+
return wd.focused;
30063002
}
30073003

30083004
bool DisplayServerX11::window_can_draw(WindowID p_window) const {
@@ -3050,7 +3046,7 @@ void DisplayServerX11::window_set_ime_active(const bool p_active, WindowID p_win
30503046
XWindowAttributes xwa;
30513047
XSync(x11_display, False);
30523048
XGetWindowAttributes(x11_display, wd.x11_xim_window, &xwa);
3053-
if (xwa.map_state == IsViewable) {
3049+
if (xwa.map_state == IsViewable && _window_focus_check()) {
30543050
_set_input_focus(wd.x11_xim_window, RevertToParent);
30553051
}
30563052
XSetICFocus(wd.xic);
@@ -4319,7 +4315,7 @@ bool DisplayServerX11::_window_focus_check() {
43194315

43204316
bool has_focus = false;
43214317
for (const KeyValue<int, DisplayServerX11::WindowData> &wid : windows) {
4322-
if (wid.value.x11_window == focused_window) {
4318+
if (wid.value.x11_window == focused_window || (wid.value.xic && wid.value.ime_active && wid.value.x11_xim_window == focused_window)) {
43234319
has_focus = true;
43244320
break;
43254321
}

scene/gui/line_edit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ void LineEdit::_close_ime_window() {
103103

104104
void LineEdit::_update_ime_window_position() {
105105
DisplayServer::WindowID wid = get_window() ? get_window()->get_window_id() : DisplayServer::INVALID_WINDOW_ID;
106-
if (wid == DisplayServer::INVALID_WINDOW_ID || !DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_IME) || !DisplayServer::get_singleton()->window_is_focused(wid)) {
106+
if (wid == DisplayServer::INVALID_WINDOW_ID || !DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_IME)) {
107107
return;
108108
}
109109
DisplayServer::get_singleton()->window_set_ime_active(true, wid);

scene/gui/text_edit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2958,7 +2958,7 @@ void TextEdit::_close_ime_window() {
29582958

29592959
void TextEdit::_update_ime_window_position() {
29602960
DisplayServer::WindowID wid = get_window() ? get_window()->get_window_id() : DisplayServer::INVALID_WINDOW_ID;
2961-
if (wid == DisplayServer::INVALID_WINDOW_ID || !DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_IME) || !DisplayServer::get_singleton()->window_is_focused(wid)) {
2961+
if (wid == DisplayServer::INVALID_WINDOW_ID || !DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_IME)) {
29622962
return;
29632963
}
29642964
DisplayServer::get_singleton()->window_set_ime_active(true, wid);

0 commit comments

Comments
 (0)