]> git.mdlowis.com Git - proto/labwc.git/commitdiff
xwayland: Implement request_activate
authorJoshua Ashton <joshua@froggi.es>
Fri, 31 Dec 2021 02:58:55 +0000 (02:58 +0000)
committerJohan Malm <johanmalm@users.noreply.github.com>
Fri, 31 Dec 2021 07:36:25 +0000 (07:36 +0000)
Used by Steam, for example, on the Friends and Chat button.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
include/labwc.h
src/xwayland.c

index 73a9479b81c80da54ebb33cff9af55bcdd81f36c..78e1b8471f0804319ff3e0c0267210bc0ab3891d 100644 (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;
index fd051256a27a8394ea79922397c543048235c361..79d317a62f4aa17e4cbaa950bb3232346067849c 100644 (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;