Improve scroll selection

This commit is contained in:
2026-03-24 19:51:32 +00:00
parent 8ff2f37af5
commit e01029d06d
4 changed files with 82 additions and 63 deletions
+8 -2
View File
@@ -152,7 +152,10 @@ changeSwapSelSet yi w
swapSelSet :: (Int -> IS.IntSet -> World -> World) -> World -> World
swapSelSet f w = fromMaybe w $ do
Sel j _ is <- w ^. hud . diSelection
Sel j i is' <- w ^. hud . diSelection
let is = if IS.null is'
then IS.singleton i
else is'
return $
if concurrentIS is
then f j is w
@@ -224,7 +227,10 @@ multiSelScroll' f w = fromMaybe w $ do
Sel j i is <- w ^. hud . diSelection
ss <- w ^? hud . diSections . ix j . ssItems
k <- f i ss
let insertordelete = if k `IS.member` is then IS.delete i else IS.insert i . IS.insert k
let insertordelete
| not (i `IS.member` is) && k `IS.member` is = IS.delete k
| k `IS.member` is = IS.delete i
| otherwise = IS.insert i . IS.insert k
return $
w
& hud . diSelection . _Just . slSet %~ insertordelete