From ca5841f7fa74e263915f1b87cd780f9a8a7e447c Mon Sep 17 00:00:00 2001 From: Platon Pronko Date: Sun, 21 Nov 2021 19:52:29 +0300 Subject: [PATCH] X.A.WindowNavigation: Fix navigation getting stuck Update left and right navigation to behave correctly even if the currently saved position is directly on the edge of the focused window. This makes the L/R behavior consistent with U/D navigation. How to reproduce the issue on a 16:9 resolution like 1920x1080: - configure Grid layout; - open 4 terminals; - navigate to the top-right terminal; - open another terminal; - immediately close it; - try navigating left from the currently focused top-right terminal; - observe navigation being "stuck". --- CHANGES.md | 5 +++++ XMonad/Actions/WindowNavigation.hs | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 9a5cadb0..f342d142 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -32,6 +32,11 @@ - Flipped how `(^?)`, `(~?)`, and `($?)` work to more accurately reflect how one uses these operators. + * `XMonad.Actions.WindowNavigation` + + - Fixed navigation getting "stuck" in certain situations for + widescreen resolutions. + ## 0.17.0 (October 27, 2021) ### Breaking Changes diff --git a/XMonad/Actions/WindowNavigation.hs b/XMonad/Actions/WindowNavigation.hs index bfcb7e54..b8897042 100644 --- a/XMonad/Actions/WindowNavigation.hs +++ b/XMonad/Actions/WindowNavigation.hs @@ -209,9 +209,9 @@ inr D (Point px py) (Rectangle rx ry w h) = px >= rx && px < rx + fromIntegral w py < ry + fromIntegral h inr U (Point px py) (Rectangle rx ry w _) = px >= rx && px < rx + fromIntegral w && py > ry -inr R (Point px py) (Rectangle rx ry _ h) = px < rx && +inr R (Point px py) (Rectangle rx ry w h) = px < rx + fromIntegral w && py >= ry && py < ry + fromIntegral h -inr L (Point px py) (Rectangle rx ry w h) = px > rx + fromIntegral w && +inr L (Point px py) (Rectangle rx ry _ h) = px > rx && py >= ry && py < ry + fromIntegral h sortby :: Direction2D -> [(a,Rectangle)] -> [(a,Rectangle)]