]> git.mdlowis.com Git - proto/labwc.git/commitdiff
implement foreign toplevel activate
authorbi4k8 <bi4k8@github>
Thu, 2 Dec 2021 14:12:32 +0000 (14:12 +0000)
committerJohan Malm <johanmalm@users.noreply.github.com>
Fri, 3 Dec 2021 06:43:34 +0000 (06:43 +0000)
include/labwc.h
src/foreign.c

index f128ec1dd6e39cc99de4f6c45c04bed32217658f..da987e444d5d7ea47f8a42917a0fe56897a2c47c 100644 (file)
@@ -267,6 +267,7 @@ struct view {
        struct wl_listener toplevel_handle_request_maximize;
        struct wl_listener toplevel_handle_request_minimize;
        struct wl_listener toplevel_handle_request_fullscreen;
+       struct wl_listener toplevel_handle_request_activate;
 
        struct wl_listener map;
        struct wl_listener unmap;
index 6a9be61daca62f335b6c0f61202b6fc52f504aef..9dbf16cedb513e789765323adbf59b89d0defed5 100644 (file)
@@ -28,6 +28,16 @@ handle_toplevel_handle_request_fullscreen(struct wl_listener *listener, void *da
        view_set_fullscreen(view, event->fullscreen, NULL);
 }
 
+static void
+handle_toplevel_handle_request_activate(struct wl_listener *listener, void *data)
+{
+       struct view *view = wl_container_of(listener, view,
+               toplevel_handle_request_activate);
+       // struct wlr_foreign_toplevel_handle_v1_activated_event *event = data;
+       /* In a multi-seat world we would select seat based on event->seat here. */
+       desktop_focus_and_activate_view(&view->server->seat, view);
+}
+
 void
 foreign_toplevel_handle_create(struct view *view)
 {
@@ -62,5 +72,10 @@ foreign_toplevel_handle_create(struct view *view)
                handle_toplevel_handle_request_fullscreen;
        wl_signal_add(&view->toplevel_handle->events.request_fullscreen,
                &view->toplevel_handle_request_fullscreen);
-       /* TODO: hook up remaining signals (close, destroy, activate) */
+
+       view->toplevel_handle_request_activate.notify =
+               handle_toplevel_handle_request_activate;
+       wl_signal_add(&view->toplevel_handle->events.request_activate,
+               &view->toplevel_handle_request_activate);
+       /* TODO: hook up remaining signals (close, destroy) */
 }