From: Andrew J. Hesford Date: Tue, 6 Feb 2024 15:00:48 +0000 (-0500) Subject: resistance: prevent "snapping" when windows change direction near edges X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=c01bf3f31959fbef532bd9842839ae5f8aac3437;p=proto%2Flabwc.git resistance: prevent "snapping" when windows change direction near edges --- diff --git a/src/resistance.c b/src/resistance.c index 506fe782..09cb4ce9 100644 --- a/src/resistance.c +++ b/src/resistance.c @@ -44,12 +44,12 @@ check_edge(int *next, struct edge current, struct edge target, if (decreasing) { const int lo = clipped_sub(opp, abs(tolerance)); const int hi = clipped_sub(opp, MIN(tolerance, 0)); - valid = tgt >= lo && tgt < hi; + valid = tgt >= lo && tgt < hi && cur >= opp; } else { /* Check for increasing movement across opposing edge */ const int lo = clipped_add(opp, MIN(tolerance, 0)); const int hi = clipped_add(opp, abs(tolerance)); - valid = tgt > lo && tgt <= hi; + valid = tgt > lo && tgt <= hi && cur <= opp; } if (valid && edges_traverse_edge(current, target, oppose)) { @@ -61,11 +61,11 @@ check_edge(int *next, struct edge current, struct edge target, if (decreasing) { const int lo = clipped_sub(aln, abs(tolerance)); const int hi = clipped_sub(aln, MIN(tolerance, 0)); - valid = tgt >= lo && tgt < hi; + valid = tgt >= lo && tgt < hi && cur >= aln; } else { const int lo = clipped_add(aln, MIN(tolerance, 0)); const int hi = clipped_add(aln, abs(tolerance)); - valid = tgt > lo && tgt <= hi; + valid = tgt > lo && tgt <= hi && cur <= aln; } if (valid && edges_traverse_edge(current, target, align)) {