diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-08-17 01:13:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-17 01:13:23 +0200 |
commit | 6936cbc24e7d675c685b43bd86fabc9d572fa178 (patch) | |
tree | 0d99ac13879b00e7675a666d797bfd115e560ba6 | |
parent | d7b892294b5385834c8d5e78d3da41e4217c7eab (diff) | |
parent | 827cadafc8bfe1d9ee159574eb5e89041b138564 (diff) |
Merge pull request #21089 from hpvb/fix-linux-debugger-foreground
Replace XRaiseWindow with a _NET_ACTIVE_WINDOW ClientRequest
-rw-r--r-- | platform/x11/os_x11.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 9d1e3291b7..a1e844898e 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -1339,7 +1339,7 @@ void OS_X11::request_attention() { // // Sets the _NET_WM_STATE_DEMANDS_ATTENTION atom for WM_STATE // Will be unset by the window manager after user react on the request for attention - // + XEvent xev; Atom wm_state = XInternAtom(x11_display, "_NET_WM_STATE", False); Atom wm_attention = XInternAtom(x11_display, "_NET_WM_STATE_DEMANDS_ATTENTION", False); @@ -1353,6 +1353,7 @@ void OS_X11::request_attention() { xev.xclient.data.l[1] = wm_attention; XSendEvent(x11_display, DefaultRootWindow(x11_display), False, SubstructureRedirectMask | SubstructureNotifyMask, &xev); + XFlush(x11_display); } void OS_X11::get_key_modifier_state(unsigned int p_x11_state, Ref<InputEventWithModifiers> state) { @@ -2436,7 +2437,19 @@ String OS_X11::get_system_dir(SystemDir p_dir) const { void OS_X11::move_window_to_foreground() { - XRaiseWindow(x11_display, x11_window); + XEvent xev; + Atom net_active_window = XInternAtom(x11_display, "_NET_ACTIVE_WINDOW", False); + + memset(&xev, 0, sizeof(xev)); + xev.type = ClientMessage; + xev.xclient.window = x11_window; + xev.xclient.message_type = net_active_window; + xev.xclient.format = 32; + xev.xclient.data.l[0] = 1; + xev.xclient.data.l[1] = CurrentTime; + + XSendEvent(x11_display, DefaultRootWindow(x11_display), False, SubstructureRedirectMask | SubstructureNotifyMask, &xev); + XFlush(x11_display); } void OS_X11::set_cursor_shape(CursorShape p_shape) { |