window.c: Add primitive support for animated cursors
This just adds an entry point to set a specific frame of an animated cursor.
This commit is contained in:
parent
f33984edea
commit
7cee19778a
@ -2275,20 +2275,22 @@ static const struct wl_data_device_listener data_device_listener = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
input_set_pointer_image(struct input *input, int pointer)
|
input_set_pointer_image_index(struct input *input, int pointer, int index)
|
||||||
{
|
{
|
||||||
struct wl_buffer *buffer;
|
struct wl_buffer *buffer;
|
||||||
struct wl_cursor *cursor;
|
struct wl_cursor *cursor;
|
||||||
struct wl_cursor_image *image;
|
struct wl_cursor_image *image;
|
||||||
|
|
||||||
if (pointer == input->current_cursor)
|
|
||||||
return;
|
|
||||||
|
|
||||||
cursor = input->display->cursors[pointer];
|
cursor = input->display->cursors[pointer];
|
||||||
if (!cursor)
|
if (!cursor)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
image = cursor->images[0];
|
if (index >= (int) cursor->image_count) {
|
||||||
|
fprintf(stderr, "cursor index out of range\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
image = cursor->images[index];
|
||||||
buffer = wl_cursor_image_get_buffer(image);
|
buffer = wl_cursor_image_get_buffer(image);
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
return;
|
return;
|
||||||
@ -2298,6 +2300,15 @@ input_set_pointer_image(struct input *input, int pointer)
|
|||||||
buffer, image->hotspot_x, image->hotspot_y);
|
buffer, image->hotspot_x, image->hotspot_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
input_set_pointer_image(struct input *input, int pointer)
|
||||||
|
{
|
||||||
|
if (pointer == input->current_cursor)
|
||||||
|
return;
|
||||||
|
|
||||||
|
input_set_pointer_image_index(input, pointer, 0);
|
||||||
|
}
|
||||||
|
|
||||||
struct wl_data_device *
|
struct wl_data_device *
|
||||||
input_get_data_device(struct input *input)
|
input_get_data_device(struct input *input)
|
||||||
{
|
{
|
||||||
|
@ -367,6 +367,9 @@ frame_create(struct window *window, void *data);
|
|||||||
void
|
void
|
||||||
input_set_pointer_image(struct input *input, int pointer);
|
input_set_pointer_image(struct input *input, int pointer);
|
||||||
|
|
||||||
|
void
|
||||||
|
input_set_pointer_image_index(struct input *input, int pointer, int index);
|
||||||
|
|
||||||
void
|
void
|
||||||
input_get_position(struct input *input, int32_t *x, int32_t *y);
|
input_get_position(struct input *input, int32_t *x, int32_t *y);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user