Enable overlapping text in selection sections
This commit is contained in:
@@ -240,28 +240,30 @@ updateSection sis mcsel availablelines ss =
|
|||||||
++ [translate 0 100 . color moredowncolor . textVMirror $ theindent ++ replicate 15 '^']
|
++ [translate 0 100 . color moredowncolor . textVMirror $ theindent ++ replicate 15 '^']
|
||||||
| otherwise = tweakfirst shownstrings
|
| otherwise = tweakfirst shownstrings
|
||||||
moredowncolor = fromMaybe white $ allstrings ^? ix (offset + availablelines - 1) . _1
|
moredowncolor = fromMaybe white $ allstrings ^? ix (offset + availablelines - 1) . _1
|
||||||
-- allstrings :: [(Color, String)]
|
allstrings :: [(Color, Picture)]
|
||||||
allstrings = foldMap g sis
|
--allstrings = foldMap g sis
|
||||||
|
allstrings = IM.elems $ overlapSelectionItems $ IM.elems sis
|
||||||
shownstrings = drop offset allstrings
|
shownstrings = drop offset allstrings
|
||||||
h (col, str) = color col . text $ theindent ++ str
|
--h (col, str) = color col . text $ theindent ++ str
|
||||||
|
h (col, str) = translate (fromIntegral (_ssIndent ss) * 10) 0 str
|
||||||
theindent = replicate (_ssIndent ss) ' '
|
theindent = replicate (_ssIndent ss) ' '
|
||||||
--xtra str = color white . text $ theindent ++ str ++ " MORE " ++ _ssDescriptor ss
|
--xtra str = color white . text $ theindent ++ str ++ " MORE " ++ _ssDescriptor ss
|
||||||
g si = map (_siColor si,) $ _siPictures si
|
g si = map (_siColor si,) $ _siPictures si
|
||||||
|
|
||||||
overlapSelectionItems :: [SelectionItem a] -> IM.IntMap (Picture, Color)
|
overlapSelectionItems :: [SelectionItem a] -> IM.IntMap (Color, Picture)
|
||||||
overlapSelectionItems = go 0
|
overlapSelectionItems = go 0
|
||||||
where
|
where
|
||||||
go :: Int -> [SelectionItem a] -> IM.IntMap (Picture,Color)
|
--go :: Int -> [SelectionItem a] -> IM.IntMap (Picture,Color)
|
||||||
go _ [] = mempty
|
go _ [] = mempty
|
||||||
go i (si : xs) = doinsert $ go (i + _siHeight si) xs
|
go i (si : xs) = doinsert $ go (i + _siHeight si) xs
|
||||||
where
|
where
|
||||||
thecol = _siColor si
|
thecol = _siColor si
|
||||||
doinsert m =
|
doinsert m =
|
||||||
ifoldr
|
ifoldr
|
||||||
(\j str -> IM.insertWith ihelp (i + j + _siOffY si) (color thecol (text str), thecol))
|
(\j str -> IM.insertWith ihelp (i + j + _siOffY si) (thecol,color thecol (text str)))
|
||||||
m
|
m
|
||||||
(_siPictures si)
|
(_siPictures si)
|
||||||
ihelp (a,_) (b,col) = (a <> b, col)
|
ihelp (_,x) (col,y) = ( col, x<>y)
|
||||||
|
|
||||||
enterCombineInv :: Configuration -> World -> World
|
enterCombineInv :: Configuration -> World -> World
|
||||||
enterCombineInv cfig w =
|
enterCombineInv cfig w =
|
||||||
|
|||||||
Reference in New Issue
Block a user