on develop help sign in
focus: a -1 focus shift with nothing focused should focus last element
commitf458c84079faa4a82dc3ad008a3779bff9367539 authorAli Abrar <aliabrar@gmail.com> dateWed 24 Mar 2021, 13:51 (6 years ago) parent565fec0
1 file changed+4−2
src/Reflex/Vty/Widget/Layout.hs+4−2
src/Reflex/Vty/Widget/Layout.hs+4−2
@@ -13,7 +13,7 @@ import Control.Monad.Reader
1313import Data.List (mapAccumL)
1414import Data.Map.Ordered (OMap)
1515import qualified Data.Map.Ordered as OMap
16−import Data.Maybe (fromMaybe)
16+import Data.Maybe (fromMaybe, isNothing)
1717import Data.Ratio ((%))
1818import Data.Semigroup (First(..))
1919import Data.Set.Ordered (OSet)
@@ -164,7 +164,9 @@ runFocus (Focus x) = do
164164 f (fs, rf) mf = case getFirst rf of
165165 Refocus_Clear -> Nothing
166166 Refocus_Id fid -> Just fid
167− Refocus_Shift n -> shiftFS fs mf n
167+ Refocus_Shift n -> if n < 0 && isNothing mf
168+ then shiftFS fs (OSet.elemAt (unFocusSet fs) 0) n
169+ else shiftFS fs mf n
168170
169171-- | Runs an action in the focus monad, providing it with information about
170172-- whether any of the foci created within it are focused.