git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit984a28e309322cd670641f240cb91c238429543b
parent12fbc32dab
authorLucas Galante <[email protected]>
date2026-06-25 14:54
Set cursor to grab or resize icon on client-requested move/resize

 src/server/xdg_toplevel.rs | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/server/xdg_toplevel.rs b/src/server/xdg_toplevel.rs
index 7bde7da..4cbb018 100644
--- a/src/server/xdg_toplevel.rs
+++ b/src/server/xdg_toplevel.rs
@@ -616,6 +616,7 @@ unsafe extern "C" fn handle_request_move(
             start_win_virtual_y: (*window).virtual_y,
         });
         cursor.op_start_pointer();
+        cursor.set_xcursor(b"grab\0".as_ptr() as *const _);
 
         (*window).wm_scheduled.pointer_move_requested = seat;
         (*(*window).server).wm.dirty_windowing();
@@ -647,6 +648,7 @@ unsafe extern "C" fn handle_request_resize(
         let cursor_x = (*cursor.wlr_cursor).x;
         let cursor_y = (*cursor.wlr_cursor).y;
 
+        let edges = crate::window::Edges::from_u32((*event).edges);
         (*seat).op = Some(crate::seat::SeatOp {
             sent_release: false,
             input: crate::seat::SeatOpInput::Pointer,
@@ -656,7 +658,7 @@ unsafe extern "C" fn handle_request_resize(
             y: cursor_y as i32,
             window_ptr: window,
             op_type: crate::seat::PointerOpType::Resize {
-                edges: crate::window::Edges::from_u32((*event).edges),
+                edges,
             },
             start_win_x: (*window).box_geom.x,
             start_win_y: (*window).box_geom.y,
@@ -666,6 +668,8 @@ unsafe extern "C" fn handle_request_resize(
             start_win_virtual_y: (*window).virtual_y,
         });
         cursor.op_start_pointer();
+        let cursor_name = crate::cursor::get_resize_cursor_name(edges);
+        cursor.set_xcursor(cursor_name.as_ptr() as *const _);
 
         (*window).wm_scheduled.pointer_resize_requested = Some(crate::window::PointerResizeRequest {
             seat,