From c98bd1eaba78bff97870207af23ee6da8450dfa0 Mon Sep 17 00:00:00 2001 From: Jan Haller Date: Tue, 13 May 2014 16:25:07 +0200 Subject: [PATCH] Window focus on X11: check if window is viewable --- src/SFML/Window/Unix/WindowImplX11.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/SFML/Window/Unix/WindowImplX11.cpp b/src/SFML/Window/Unix/WindowImplX11.cpp index f43644df..bd1fb2c8 100644 --- a/src/SFML/Window/Unix/WindowImplX11.cpp +++ b/src/SFML/Window/Unix/WindowImplX11.cpp @@ -486,6 +486,16 @@ void WindowImplX11::setKeyRepeatEnabled(bool enabled) //////////////////////////////////////////////////////////// void WindowImplX11::requestFocus() { + // Check if window is viewable (not on other desktop, minimized, ...) + XWindowAttributes attributes; + if (XGetWindowAttributes(m_display, m_window, &attributes) == 0) + return; // error getting attribute + + // Not viewable: Can't set focus + if (attributes.map_state != IsViewable) + return; + + // Bring window to the front and give it input focus XRaiseWindow(m_display, m_window); XSetInputFocus(m_display, m_window, RevertToPointerRoot, CurrentTime); }