|
|
@ -157,8 +157,7 @@ static void update_cursor(struct swaynag_seat *seat) {
|
|
|
|
sway_log(SWAY_ERROR, "Failed to load cursor theme");
|
|
|
|
sway_log(SWAY_ERROR, "Failed to load cursor theme");
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
struct wl_cursor *cursor =
|
|
|
|
struct wl_cursor *cursor = wl_cursor_theme_get_cursor(pointer->cursor_theme, "default");
|
|
|
|
wl_cursor_theme_get_cursor(pointer->cursor_theme, "default");
|
|
|
|
|
|
|
|
if (!cursor) {
|
|
|
|
if (!cursor) {
|
|
|
|
sway_log(SWAY_ERROR, "Failed to get default cursor from theme");
|
|
|
|
sway_log(SWAY_ERROR, "Failed to get default cursor from theme");
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -190,12 +189,23 @@ static void wl_pointer_enter(void *data, struct wl_pointer *wl_pointer,
|
|
|
|
uint32_t serial, struct wl_surface *surface,
|
|
|
|
uint32_t serial, struct wl_surface *surface,
|
|
|
|
wl_fixed_t surface_x, wl_fixed_t surface_y) {
|
|
|
|
wl_fixed_t surface_x, wl_fixed_t surface_y) {
|
|
|
|
struct swaynag_seat *seat = data;
|
|
|
|
struct swaynag_seat *seat = data;
|
|
|
|
|
|
|
|
|
|
|
|
struct swaynag_pointer *pointer = &seat->pointer;
|
|
|
|
struct swaynag_pointer *pointer = &seat->pointer;
|
|
|
|
pointer->x = wl_fixed_to_int(surface_x);
|
|
|
|
pointer->x = wl_fixed_to_int(surface_x);
|
|
|
|
pointer->y = wl_fixed_to_int(surface_y);
|
|
|
|
pointer->y = wl_fixed_to_int(surface_y);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (seat->swaynag->cursor_shape_manager) {
|
|
|
|
|
|
|
|
struct wp_cursor_shape_device_v1 *device =
|
|
|
|
|
|
|
|
wp_cursor_shape_manager_v1_get_pointer(
|
|
|
|
|
|
|
|
seat->swaynag->cursor_shape_manager, wl_pointer);
|
|
|
|
|
|
|
|
wp_cursor_shape_device_v1_set_shape(device, serial,
|
|
|
|
|
|
|
|
WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_DEFAULT);
|
|
|
|
|
|
|
|
wp_cursor_shape_device_v1_destroy(device);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
pointer->serial = serial;
|
|
|
|
pointer->serial = serial;
|
|
|
|
update_cursor(seat);
|
|
|
|
update_cursor(seat);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void wl_pointer_motion(void *data, struct wl_pointer *wl_pointer,
|
|
|
|
static void wl_pointer_motion(void *data, struct wl_pointer *wl_pointer,
|
|
|
|
uint32_t time, wl_fixed_t surface_x, wl_fixed_t surface_y) {
|
|
|
|
uint32_t time, wl_fixed_t surface_x, wl_fixed_t surface_y) {
|
|
|
@ -386,6 +396,9 @@ static void handle_global(void *data, struct wl_registry *registry,
|
|
|
|
} else if (strcmp(interface, zwlr_layer_shell_v1_interface.name) == 0) {
|
|
|
|
} else if (strcmp(interface, zwlr_layer_shell_v1_interface.name) == 0) {
|
|
|
|
swaynag->layer_shell = wl_registry_bind(
|
|
|
|
swaynag->layer_shell = wl_registry_bind(
|
|
|
|
registry, name, &zwlr_layer_shell_v1_interface, 1);
|
|
|
|
registry, name, &zwlr_layer_shell_v1_interface, 1);
|
|
|
|
|
|
|
|
} else if (strcmp(interface, wp_cursor_shape_manager_v1_interface.name) == 0) {
|
|
|
|
|
|
|
|
swaynag->cursor_shape_manager = wl_registry_bind(
|
|
|
|
|
|
|
|
registry, name, &wp_cursor_shape_manager_v1_interface, 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -464,7 +477,9 @@ void swaynag_setup(struct swaynag *swaynag) {
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!swaynag->cursor_shape_manager) {
|
|
|
|
swaynag_setup_cursors(swaynag);
|
|
|
|
swaynag_setup_cursors(swaynag);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
swaynag->surface = wl_compositor_create_surface(swaynag->compositor);
|
|
|
|
swaynag->surface = wl_compositor_create_surface(swaynag->compositor);
|
|
|
|
assert(swaynag->surface);
|
|
|
|
assert(swaynag->surface);
|
|
|
|