diff options
Diffstat (limited to '')
-rw-r--r-- | patches/toggle_constraints.patch | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/patches/toggle_constraints.patch b/patches/toggle_constraints.patch new file mode 100644 index 0000000..e823377 --- /dev/null +++ b/patches/toggle_constraints.patch @@ -0,0 +1,86 @@ +From 13bb9d86a0da2ebc82c20ee721b3eeb28592b0a0 Mon Sep 17 00:00:00 2001 +From: David Donahue <david.donahue2996@gmail.com> +Date: Tue, 26 Mar 2024 17:45:26 -0600 +Subject: [PATCH] Added function to toggle pointer constraints via a keybind + +--- + dwl.c | 41 ++++++++++++++++++++++++++--------------- + 1 file changed, 26 insertions(+), 15 deletions(-) + +diff --git a/dwl.c b/dwl.c +index 5867b0c..04d377b 100644 +--- a/dwl.c ++++ b/dwl.c +@@ -332,6 +332,7 @@ static void tagmon(const Arg *arg); + static void tile(Monitor *m); + static void togglefloating(const Arg *arg); + static void togglefullscreen(const Arg *arg); ++static void togglepointerconstraints(const Arg *arg); + static void toggletag(const Arg *arg); + static void toggleview(const Arg *arg); + static void unlocksession(struct wl_listener *listener, void *data); +@@ -400,6 +401,8 @@ static unsigned int cursor_mode; + static Client *grabc; + static int grabcx, grabcy; /* client-relative */ + ++static int enable_constraints = 1; ++ + static struct wlr_output_layout *output_layout; + static struct wlr_box sgeom; + static struct wl_list mons; +@@ -1700,22 +1703,24 @@ motionnotify(uint32_t time, struct wlr_input_device *device, double dx, double d + relative_pointer_mgr, seat, (uint64_t)time * 1000, + dx, dy, dx_unaccel, dy_unaccel); + +- wl_list_for_each(constraint, &pointer_constraints->constraints, link) +- cursorconstrain(constraint); +- +- if (active_constraint && cursor_mode != CurResize && cursor_mode != CurMove) { +- toplevel_from_wlr_surface(active_constraint->surface, &c, NULL); +- if (c && active_constraint->surface == seat->pointer_state.focused_surface) { +- sx = cursor->x - c->geom.x - c->bw; +- sy = cursor->y - c->geom.y - c->bw; +- if (wlr_region_confine(&active_constraint->region, sx, sy, +- sx + dx, sy + dy, &sx_confined, &sy_confined)) { +- dx = sx_confined - sx; +- dy = sy_confined - sy; ++ if (enable_constraints){ ++ wl_list_for_each(constraint, &pointer_constraints->constraints, link) ++ cursorconstrain(constraint); ++ ++ if (active_constraint && cursor_mode != CurResize && cursor_mode != CurMove) { ++ toplevel_from_wlr_surface(active_constraint->surface, &c, NULL); ++ if (c && active_constraint->surface == seat->pointer_state.focused_surface) { ++ sx = cursor->x - c->geom.x - c->bw; ++ sy = cursor->y - c->geom.y - c->bw; ++ if (wlr_region_confine(&active_constraint->region, sx, sy, ++ sx + dx, sy + dy, &sx_confined, &sy_confined)) { ++ dx = sx_confined - sx; ++ dy = sy_confined - sy; ++ } ++ ++ if (active_constraint->type == WLR_POINTER_CONSTRAINT_V1_LOCKED) ++ return; + } +- +- if (active_constraint->type == WLR_POINTER_CONSTRAINT_V1_LOCKED) +- return; + } + } + +@@ -2620,6 +2625,12 @@ togglefullscreen(const Arg *arg) + setfullscreen(sel, !sel->isfullscreen); + } + ++void ++togglepointerconstraints(const Arg *arg) ++{ ++ enable_constraints = !enable_constraints; ++} ++ + void + toggletag(const Arg *arg) + { +-- +2.43.2 + |