]> git.mdlowis.com Git - proto/labwc.git/commitdiff
xdg: Implement request_minimize
authorJoshua Ashton <joshua@froggi.es>
Fri, 31 Dec 2021 02:44:25 +0000 (02:44 +0000)
committerJohan Malm <johanmalm@users.noreply.github.com>
Fri, 31 Dec 2021 07:36:25 +0000 (07:36 +0000)
Signed-off-by: Joshua Ashton <joshua@froggi.es>
include/labwc.h
src/xdg.c

index 8b960a5624bff6750937996081078bc070ef3214..73a9479b81c80da54ebb33cff9af55bcdd81f36c 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_minimize;
        struct wl_listener request_maximize;
        struct wl_listener request_fullscreen;
        struct wl_listener set_title;
index 2507334585576e66cc5afde357a1eff4e100ac2e..e241e0317116f7e01bf0bb26b1f2d57dce794ac5 100644 (file)
--- a/src/xdg.c
+++ b/src/xdg.c
@@ -135,6 +135,16 @@ handle_request_resize(struct wl_listener *listener, void *data)
        interactive_begin(view, LAB_INPUT_STATE_RESIZE, event->edges);
 }
 
+static void
+handle_request_minimize(struct wl_listener *listener, void *data)
+{
+       struct view *view = wl_container_of(listener, view, request_minimize);
+       struct wlr_xdg_surface *surface = data;
+       if (view) {
+               view_minimize(view, surface->toplevel->requested.minimized);
+       }
+}
+
 static void
 handle_request_maximize(struct wl_listener *listener, void *data)
 {
@@ -423,6 +433,8 @@ xdg_surface_new(struct wl_listener *listener, void *data)
        wl_signal_add(&toplevel->events.request_move, &view->request_move);
        view->request_resize.notify = handle_request_resize;
        wl_signal_add(&toplevel->events.request_resize, &view->request_resize);
+       view->request_minimize.notify = handle_request_minimize;
+       wl_signal_add(&toplevel->events.request_minimize, &view->request_minimize);
        view->request_maximize.notify = handle_request_maximize;
        wl_signal_add(&toplevel->events.request_maximize, &view->request_maximize);
        view->request_fullscreen.notify = handle_request_fullscreen;