diff --git a/src/video/sdl2_v.cpp b/src/video/sdl2_v.cpp index bd928b0807..50746b8655 100644 --- a/src/video/sdl2_v.cpp +++ b/src/video/sdl2_v.cpp @@ -50,6 +50,7 @@ static std::string _editing_text; static void SetTextInputRect(); +bool IsWindowFocused(); Point GetFocusedWindowCaret(); Point GetFocusedWindowTopLeft(); bool FocusedWindowIsConsole(); @@ -432,6 +433,8 @@ bool VideoDriver_SDL_Base::ClaimMousePointer() static void SetTextInputRect() { + if (!IsWindowFocused()) return; + SDL_Rect winrect; Point caret = GetFocusedWindowCaret(); Point win = GetFocusedWindowTopLeft(); diff --git a/src/window.cpp b/src/window.cpp index cd359492b1..7fd15c75f2 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -452,6 +452,11 @@ void SetFocusedWindow(Window *w) if (_focused_window != nullptr) _focused_window->OnFocus(old_focused); } +bool IsWindowFocused() +{ + return _focused_window != nullptr; +} + Point GetFocusedWindowCaret() { return _focused_window->GetCaretPosition(); @@ -519,7 +524,7 @@ bool Window::SetFocusedWidget(int widget_index) if (this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxLostFocus(); } this->nested_focus = this->GetWidget(widget_index); - if (this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxGainedFocus(); + if (_focused_window == this && this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxGainedFocus(); return true; }