From: bi4k8 Date: Thu, 2 Dec 2021 14:12:32 +0000 (+0000) Subject: implement foreign toplevel activate X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=0be4625c1cba6d1fd30de409102814cf59a21e5f;p=proto%2Flabwc.git implement foreign toplevel activate --- diff --git a/include/labwc.h b/include/labwc.h index f128ec1d..da987e44 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -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; diff --git a/src/foreign.c b/src/foreign.c index 6a9be61d..9dbf16ce 100644 --- a/src/foreign.c +++ b/src/foreign.c @@ -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) */ }