]> git.mdlowis.com Git - proto/labwc.git/commitdiff
view: make request_activate listener xwayland only
authorJohan Malm <jgm323@gmail.com>
Fri, 24 Feb 2023 21:27:11 +0000 (21:27 +0000)
committerConsolatis <35009135+Consolatis@users.noreply.github.com>
Fri, 24 Feb 2023 21:56:00 +0000 (22:56 +0100)
include/view.h
include/xwayland.h
src/xwayland.c

index 701ec177e2669ef301b3eada1f5953e9311bbbf3..abc8b6ce9bfc781e85c045ca67d188960c5c9c1f 100644 (file)
@@ -99,7 +99,6 @@ struct view {
        struct wl_listener commit;
        struct wl_listener request_move;
        struct wl_listener request_resize;
-       struct wl_listener request_activate;
        struct wl_listener request_minimize;
        struct wl_listener request_maximize;
        struct wl_listener request_fullscreen;
index 8692085d8c33e3c01d8cc1aebfc38fa8cebe29b0..5ac327ad711f4af8617d95b8bd00bc04635cf593 100644 (file)
@@ -28,6 +28,7 @@ struct xwayland_view {
        struct wlr_xwayland_surface *xwayland_surface;
 
        /* Events unique to XWayland views */
+       struct wl_listener request_activate;
        struct wl_listener request_configure;
        struct wl_listener set_app_id;          /* TODO: s/set_app_id/class/ */
        struct wl_listener set_decorations;
index f70bb94ff4bf51924f9a786bc6cd6fa510dd8e00..104c92c9ef7ab966c99b0c854dd1e0125cb0bcd5 100644 (file)
@@ -227,12 +227,12 @@ handle_destroy(struct wl_listener *listener, void *data)
        wl_list_remove(&view->unmap.link);
        wl_list_remove(&view->request_move.link);
        wl_list_remove(&view->request_resize.link);
-       wl_list_remove(&view->request_activate.link);
        wl_list_remove(&view->request_minimize.link);
        wl_list_remove(&view->request_maximize.link);
        wl_list_remove(&view->request_fullscreen.link);
        wl_list_remove(&view->set_title.link);
 
+       wl_list_remove(&xwayland_view->request_activate.link);
        wl_list_remove(&xwayland_view->request_configure.link);
        wl_list_remove(&xwayland_view->set_app_id.link);
        wl_list_remove(&xwayland_view->set_decorations.link);
@@ -279,8 +279,10 @@ handle_request_configure(struct wl_listener *listener, void *data)
 static void
 handle_request_activate(struct wl_listener *listener, void *data)
 {
-       struct view *view = wl_container_of(listener, view, request_activate);
-       assert(view);
+       struct xwayland_view *xwayland_view =
+               wl_container_of(listener, xwayland_view, request_activate);
+       assert(xwayland_view);
+       struct view *view = &xwayland_view->base;
        desktop_focus_and_activate_view(&view->server->seat, view);
        desktop_move_to_front(view);
 }
@@ -640,8 +642,6 @@ handle_new_surface(struct wl_listener *listener, void *data)
        wl_signal_add(&xsurface->events.unmap, &view->unmap);
        view->destroy.notify = handle_destroy;
        wl_signal_add(&xsurface->events.destroy, &view->destroy);
-       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;
@@ -657,6 +657,10 @@ handle_new_surface(struct wl_listener *listener, void *data)
        wl_signal_add(&xsurface->events.set_title, &view->set_title);
 
        /* Events specific to XWayland views */
+       xwayland_view->request_activate.notify = handle_request_activate;
+       wl_signal_add(&xsurface->events.request_activate,
+               &xwayland_view->request_activate);
+
        xwayland_view->request_configure.notify = handle_request_configure;
        wl_signal_add(&xsurface->events.request_configure,
                &xwayland_view->request_configure);