43 lines
1.3 KiB
C
43 lines
1.3 KiB
C
#include <wlr/types/wlr_cursor.h>
|
|
#include "rootston/input.h"
|
|
|
|
static const char *get_resize_xcursor_name(uint32_t edges) {
|
|
if (edges & ROOTS_CURSOR_RESIZE_EDGE_TOP) {
|
|
if (edges & ROOTS_CURSOR_RESIZE_EDGE_RIGHT) {
|
|
return "ne-resize";
|
|
} else if (edges & ROOTS_CURSOR_RESIZE_EDGE_LEFT) {
|
|
return "nw-resize";
|
|
}
|
|
return "n-resize";
|
|
} else if (edges & ROOTS_CURSOR_RESIZE_EDGE_BOTTOM) {
|
|
if (edges & ROOTS_CURSOR_RESIZE_EDGE_RIGHT) {
|
|
return "se-resize";
|
|
} else if (edges & ROOTS_CURSOR_RESIZE_EDGE_LEFT) {
|
|
return "sw-resize";
|
|
}
|
|
return "s-resize";
|
|
} else if (edges & ROOTS_CURSOR_RESIZE_EDGE_RIGHT) {
|
|
return "e-resize";
|
|
} else if (edges & ROOTS_CURSOR_RESIZE_EDGE_LEFT) {
|
|
return "w-resize";
|
|
}
|
|
return "se-resize"; // fallback
|
|
}
|
|
|
|
struct wlr_xcursor *get_default_xcursor(struct wlr_xcursor_theme *theme) {
|
|
return wlr_xcursor_theme_get_cursor(theme, "left_ptr");
|
|
}
|
|
|
|
struct wlr_xcursor *get_move_xcursor(struct wlr_xcursor_theme *theme) {
|
|
return wlr_xcursor_theme_get_cursor(theme, "grabbing");
|
|
}
|
|
|
|
struct wlr_xcursor *get_resize_xcursor(struct wlr_xcursor_theme *theme,
|
|
uint32_t edges) {
|
|
return wlr_xcursor_theme_get_cursor(theme, get_resize_xcursor_name(edges));
|
|
}
|
|
|
|
struct wlr_xcursor *get_rotate_xcursor(struct wlr_xcursor_theme *theme) {
|
|
return wlr_xcursor_theme_get_cursor(theme, "grabbing");
|
|
}
|