From d5532ace7a78079b2443e5664c2c95de9e94d838 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Fri, 31 Dec 2021 02:58:55 +0000 Subject: [PATCH] xwayland: Implement request_activate Used by Steam, for example, on the Friends and Chat button. Signed-off-by: Joshua Ashton --- include/labwc.h | 1 + src/xwayland.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/labwc.h b/include/labwc.h index 73a9479b..78e1b847 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -277,6 +277,7 @@ struct view { struct wl_listener request_move; struct wl_listener request_resize; struct wl_listener request_configure; /* xwayland only */ + struct wl_listener request_activate; struct wl_listener request_minimize; struct wl_listener request_maximize; struct wl_listener request_fullscreen; diff --git a/src/xwayland.c b/src/xwayland.c index fd051256..79d317a6 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -111,6 +111,15 @@ handle_request_configure(struct wl_listener *listener, void *data) } #undef MAX +static void +handle_request_activate(struct wl_listener *listener, void *data) +{ + struct view *view = wl_container_of(listener, view, request_activate); + assert(view); + desktop_focus_and_activate_view(&view->server->seat, view); + desktop_move_to_front(view); +} + static void handle_request_minimize(struct wl_listener *listener, void *data) { @@ -368,6 +377,8 @@ xwayland_surface_new(struct wl_listener *listener, void *data) wl_signal_add(&xsurface->events.destroy, &view->destroy); view->request_configure.notify = handle_request_configure; wl_signal_add(&xsurface->events.request_configure, &view->request_configure); + view->request_activate.notify = handle_request_activate; + wl_signal_add(&xsurface->events.request_activate, &view->request_activate); view->request_minimize.notify = handle_request_minimize; wl_signal_add(&xsurface->events.request_minimize, &view->request_minimize); view->request_maximize.notify = handle_request_maximize;