xwayland: Implement request_activate

Used by Steam, for example, on the Friends and Chat button.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
This commit is contained in:
Joshua Ashton 2021-12-31 02:58:55 +00:00 committed by Johan Malm
parent 5ae921d785
commit d5532ace7a
2 changed files with 12 additions and 0 deletions

View file

@ -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;

View file

@ -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;