xwayland: Stack windows on top when activating them
authorJasper St. Pierre <jstpierre@mecheye.net>
Sun, 22 Mar 2015 17:14:49 +0000 (10:14 -0700)
committerDaniel Stone <daniels@collabora.com>
Mon, 6 Apr 2015 17:10:20 +0000 (18:10 +0100)
Now that we've removed the XYToWindow handler in Xwayland, we actually
have to stack windows properly. This stacks windows on top when
activating them.

Note that for a fully robust Xwayland implementation, we'll need a
complete stack tracker implementation, unfortunately.

Reviewed-by: Daniel Stone <daniels@collabora.com>
xwayland/window-manager.c

index 145d940e3db886af090542d7fad67f41e3ac7057..7018c92f883218af3a0d62d84c8e4b115d673646 100644 (file)
@@ -720,6 +720,8 @@ weston_wm_window_activate(struct wl_listener *listener, void *data)
        }
 
        if (window) {
+               uint32_t values[1];
+
                if (window->override_redirect)
                        return;
 
@@ -736,6 +738,10 @@ weston_wm_window_activate(struct wl_listener *listener, void *data)
 
                xcb_set_input_focus (wm->conn, XCB_INPUT_FOCUS_POINTER_ROOT,
                                     window->id, XCB_TIME_CURRENT_TIME);
+
+               values[0] = XCB_STACK_MODE_ABOVE;
+               xcb_configure_window (wm->conn, window->frame_id,
+                                     XCB_CONFIG_WINDOW_STACK_MODE, values);
        } else {
                xcb_set_input_focus (wm->conn,
                                     XCB_INPUT_FOCUS_POINTER_ROOT,