]> git.mdlowis.com Git - proto/labwc.git/commitdiff
xwayland: Implement resize event
authorJoshua Ashton <joshua@froggi.es>
Sun, 17 Oct 2021 17:12:51 +0000 (17:12 +0000)
committerJohan Malm <johanmalm@users.noreply.github.com>
Sun, 17 Oct 2021 17:23:15 +0000 (18:23 +0100)
Signed-off-by: Joshua Ashton <joshua@froggi.es>
src/xwayland.c

index a32202f50700a30a3dda7782f193a6939ec255be..9fc60b95b7cb5b8631385ed88dc9b6b0adfc0629 100644 (file)
@@ -43,6 +43,23 @@ handle_request_move(struct wl_listener *listener, void *data)
        interactive_begin(view, LAB_INPUT_STATE_MOVE, 0);
 }
 
+static void
+handle_request_resize(struct wl_listener *listener, void *data)
+{
+       /*
+        * This event is raised when a client would like to begin an interactive
+        * resize, typically because the user clicked on their client-side
+        * decorations. Note that a more sophisticated compositor should check
+        * the provied serial against a list of button press serials sent to
+        * this
+        * client, to prevent the client from requesting this whenever they
+        * want.
+        */
+       struct wlr_xwayland_resize_event *event = data;
+       struct view *view = wl_container_of(listener, view, request_resize);
+       interactive_begin(view, LAB_INPUT_STATE_RESIZE, event->edges);
+}
+
 static void
 handle_map(struct wl_listener *listener, void *data)
 {
@@ -329,6 +346,9 @@ xwayland_surface_new(struct wl_listener *listener, void *data)
        view->request_move.notify = handle_request_move;
        wl_signal_add(&xsurface->events.request_move,
                &view->request_move);
+       view->request_resize.notify = handle_request_resize;
+       wl_signal_add(&xsurface->events.request_resize,
+               &view->request_resize);
 
        view->set_title.notify = handle_set_title;
        wl_signal_add(&xsurface->events.set_title, &view->set_title);