mirror of
https://github.com/labwc/labwc.git
synced 2025-11-02 09:01:47 -05:00
src/cursor.c: add cursor lock confinement
This commit is contained in:
parent
c25e2c7a7d
commit
22ba7f6744
1 changed files with 12 additions and 0 deletions
12
src/cursor.c
12
src/cursor.c
|
|
@ -595,6 +595,7 @@ apply_constraint(struct seat *seat, struct wlr_pointer *pointer, double *x, doub
|
|||
if (!seat->current_constraint || pointer->base.type != WLR_INPUT_DEVICE_POINTER) {
|
||||
return;
|
||||
}
|
||||
assert(seat->current_constraint->type == WLR_POINTER_CONSTRAINT_V1_CONFINED);
|
||||
|
||||
double sx = seat->cursor->x;
|
||||
double sy = seat->cursor->y;
|
||||
|
|
@ -612,10 +613,21 @@ apply_constraint(struct seat *seat, struct wlr_pointer *pointer, double *x, doub
|
|||
*y = sy_confined - sy;
|
||||
}
|
||||
|
||||
static bool
|
||||
cursor_locked(struct seat *seat, struct wlr_pointer *pointer)
|
||||
{
|
||||
return seat->current_constraint
|
||||
&& pointer->base.type == WLR_INPUT_DEVICE_POINTER
|
||||
&& seat->current_constraint->type == WLR_POINTER_CONSTRAINT_V1_LOCKED;
|
||||
}
|
||||
|
||||
static void
|
||||
preprocess_cursor_motion(struct seat *seat, struct wlr_pointer *pointer,
|
||||
uint32_t time_msec, double dx, double dy)
|
||||
{
|
||||
if (cursor_locked(seat, pointer)) {
|
||||
return;
|
||||
}
|
||||
apply_constraint(seat, pointer, &dx, &dy);
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue