]> git.mdlowis.com Git - proto/labwc.git/commitdiff
foreign: handle maximize request
authorJohan Malm <jgm323@gmail.com>
Thu, 5 Aug 2021 11:52:42 +0000 (12:52 +0100)
committerJohan Malm <jgm323@gmail.com>
Thu, 5 Aug 2021 11:52:42 +0000 (12:52 +0100)
include/labwc.h
src/foreign.c
src/view.c

index 61933bcf72c42870a47d06a499b46444ab5c3423..580fe0ffd8a22af64d9a7d05a8b2440250dcae04 100644 (file)
@@ -224,6 +224,7 @@ struct view {
        } ssd;
 
        struct wlr_foreign_toplevel_handle_v1 *toplevel_handle;
+       struct wl_listener toplevel_handle_request_maximize;
 
        struct wl_listener map;
        struct wl_listener unmap;
index e6d5dec26ff20f1fb68180a046a87a3cecdcbbc3..2f8934fe55dac7bbd2e729d87c39d6f96e3d64e0 100644 (file)
@@ -1,5 +1,15 @@
 #include "labwc.h"
 
+static void
+handle_toplevel_handle_request_maximize(struct wl_listener *listener, void *data)
+{
+       struct view *view = wl_container_of(listener, view,
+               toplevel_handle_request_maximize);
+       struct wlr_foreign_toplevel_handle_v1_maximized_event *event = data;
+       printf("max=%d\n", event->maximized);
+       view_maximize(view, event->maximized);
+}
+
 void
 foreign_toplevel_handle_create(struct view *view)
 {
@@ -8,4 +18,9 @@ foreign_toplevel_handle_create(struct view *view)
        view_update_title(view);
        wlr_foreign_toplevel_handle_v1_output_enter(view->toplevel_handle,
                view_wlr_output(view));
+
+       view->toplevel_handle_request_maximize.notify =
+               handle_toplevel_handle_request_maximize;
+       wl_signal_add(&view->toplevel_handle->events.request_maximize,
+               &view->toplevel_handle_request_maximize);
 }
index 0b29ad72acc90921edc41b5180ba065d7aa57fb7..a076a31098a36ea7f11aa5b8a6b5cb9f0a26b6cc 100644 (file)
@@ -73,6 +73,10 @@ view_maximize(struct view *view, bool maximize)
                return;
        }
        view->impl->maximize(view, maximize);
+       if (view->toplevel_handle) {
+               wlr_foreign_toplevel_handle_v1_set_maximized(view->toplevel_handle,
+                       maximize);
+       }
        if (maximize) {
                view->unmaximized_geometry.x = view->x;
                view->unmaximized_geometry.y = view->y;