Improve scroll selection
This commit is contained in:
@@ -41,21 +41,35 @@ ssScrollUsing ::
|
||||
Maybe Selection
|
||||
ssScrollUsing g = ssScrollMinOnFail g . fmap (ssItems %~ IM.filter _siIsSelectable)
|
||||
|
||||
--
|
||||
ssScrollMinOnFail ::
|
||||
(Int -> Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)) ->
|
||||
IMSS a ->
|
||||
Maybe Selection ->
|
||||
Maybe Selection
|
||||
ssScrollMinOnFail f sss msel = fmap (\(i, j, _) -> Sel i j (q i j)) $ l <|> ssLookupMin sss
|
||||
ssScrollMinOnFail f sss msel = fmap (\(i, j, _) -> Sel i j q) $ l <|> ssLookupMin sss
|
||||
where
|
||||
q i j = fromMaybe mempty $ do
|
||||
Sel k _ xs <- msel ^? _Just
|
||||
guard $ j `IS.member` xs && i == k
|
||||
return xs
|
||||
q = fold (msel ^? _Just . slSet)
|
||||
l = do
|
||||
Sel i j _ <- msel
|
||||
f i j sss
|
||||
|
||||
---- this version removes the selected set when scrolling outside it
|
||||
--ssScrollMinOnFail' ::
|
||||
-- (Int -> Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)) ->
|
||||
-- IMSS a ->
|
||||
-- Maybe Selection ->
|
||||
-- Maybe Selection
|
||||
--ssScrollMinOnFail' f sss msel = fmap (\(i, j, _) -> Sel i j (q i j)) $ l <|> ssLookupMin sss
|
||||
-- where
|
||||
-- q i j = fromMaybe mempty $ do
|
||||
-- Sel k _ xs <- msel ^? _Just
|
||||
-- guard $ j `IS.member` xs && i == k
|
||||
-- return xs
|
||||
-- l = do
|
||||
-- Sel i j _ <- msel
|
||||
-- f i j sss
|
||||
|
||||
ssSetCursor ::
|
||||
(IMSS a -> Maybe (Int, Int, SelectionItem a)) ->
|
||||
IMSS a ->
|
||||
|
||||
Reference in New Issue
Block a user