]> git.mdlowis.com Git - proto/labwc.git/commitdiff
interactive.c: set move/resize cursor
authorJohan Malm <jgm323@gmail.com>
Sun, 28 Nov 2021 21:47:24 +0000 (21:47 +0000)
committerJohan Malm <jgm323@gmail.com>
Sun, 28 Nov 2021 21:47:24 +0000 (21:47 +0000)
Fixes issue #124

include/labwc.h
src/cursor.c
src/interactive.c

index 27a67abf79fea8b44141a3653537bc799e7d570b..448a5a292d3ebbe13d087d9d13d09bf4a06ac597 100644 (file)
@@ -65,8 +65,10 @@ struct seat {
        struct wlr_seat *seat;
        struct server *server;
        struct wlr_keyboard_group *keyboard_group;
+
        struct wlr_cursor *cursor;
        struct wlr_xcursor_manager *xcursor_manager;
+
        struct wlr_drag_icon *drag_icon;
        struct wlr_pointer_constraint_v1 *current_constraint;
        struct wlr_idle *wlr_idle;
@@ -422,6 +424,7 @@ struct view *desktop_surface_and_view_at(struct server *server, double lx,
 
 struct view *desktop_view_at_cursor(struct server *server);
 
+void cursor_set(struct seat *seat, const char *cursor_name);
 void cursor_init(struct seat *seat);
 
 void keyboard_init(struct seat *seat);
index 3d75c040bffccb81b55fd2848070f814deec005e..e9c55559d2ea90df201842df7f05b6035369ba14 100644 (file)
@@ -130,11 +130,11 @@ process_cursor_resize(struct server *server, uint32_t time)
        view_move_resize(view, new_view_geo);
 }
 
-static void
-set_cursor(struct server *server, const char *cursor_name)
+void
+cursor_set(struct seat *seat, const char *cursor_name)
 {
        wlr_xcursor_manager_set_cursor_image(
-               server->seat.xcursor_manager, cursor_name, server->seat.cursor);
+               seat->xcursor_manager, cursor_name, seat->cursor);
 }
 
 bool
@@ -175,19 +175,19 @@ process_cursor_motion(struct server *server, uint32_t time)
                &sx, &sy, &view_area);
 
        if (!view) {
-               set_cursor(server, XCURSOR_DEFAULT);
+               cursor_set(&server->seat, XCURSOR_DEFAULT);
        } else {
                uint32_t resize_edges = ssd_resize_edges(view_area);
                if (resize_edges) {
                        cursor_name_set_by_server = true;
-                       set_cursor(server,
+                       cursor_set(&server->seat,
                                wlr_xcursor_get_resize_name(resize_edges));
                } else if (view_area != LAB_SSD_NONE) {
                        /* title and buttons */
-                       set_cursor(server, XCURSOR_DEFAULT);
+                       cursor_set(&server->seat, XCURSOR_DEFAULT);
                        cursor_name_set_by_server = true;
                } else if (cursor_name_set_by_server) {
-                       set_cursor(server, XCURSOR_DEFAULT);
+                       cursor_set(&server->seat, XCURSOR_DEFAULT);
                        cursor_name_set_by_server = false;
                }
        }
index daa6764da03eed6e303b0d3fb5943327a7823fe6..5dcedc3d56ecd395f73e687e6fefdeb8e206ad82 100644 (file)
@@ -26,4 +26,15 @@ interactive_begin(struct view *view, enum input_mode mode, uint32_t edges)
        };
        memcpy(&server->grab_box, &box, sizeof(struct wlr_box));
        server->resize_edges = edges;
+
+       switch (mode) {
+       case LAB_INPUT_STATE_MOVE:
+               cursor_set(&server->seat, "move");
+               break;
+       case LAB_INPUT_STATE_RESIZE:
+               cursor_set(&server->seat, wlr_xcursor_get_resize_name(edges));
+               break;
+       default:
+               break;
+       }
 }