diff options
Diffstat (limited to 'sway/desktop/xwayland.c')
-rw-r--r-- | sway/desktop/xwayland.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index e15a3341..55a14c0b 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c @@ -575,6 +575,7 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data) transaction_commit_dirty(); } +/* Minimize to scratchpad */ static void handle_request_minimize(struct wl_listener *listener, void *data) { struct sway_xwayland_view *xwayland_view = wl_container_of(listener, xwayland_view, request_minimize); @@ -585,6 +586,27 @@ static void handle_request_minimize(struct wl_listener *listener, void *data) { } struct wlr_xwayland_minimize_event *e = data; + if (config->scratchpad_minimize) { + struct sway_container *container = view->container; + if (!container->pending.workspace) { + while (container->pending.parent) { + container = container->pending.parent; + } + } + if(e->minimize) { + if (!container->scratchpad) { + root_scratchpad_add_container(container, NULL); + } else if (container->pending.workspace) { + root_scratchpad_hide(container); + } + } else { + if(container->scratchpad) { + root_scratchpad_show(container); + } + } + transaction_commit_dirty(); + return; + } struct sway_seat *seat = input_manager_current_seat(); bool focused = seat_get_focus(seat) == &view->container->node; wlr_xwayland_surface_set_minimized(xsurface, !focused && e->minimize); |