diff --git a/src/Dodge/Update/Input/ScreenLayer.hs b/src/Dodge/Update/Input/ScreenLayer.hs index 6425d027c..cf0bbf99a 100644 --- a/src/Dodge/Update/Input/ScreenLayer.hs +++ b/src/Dodge/Update/Input/ScreenLayer.hs @@ -42,15 +42,14 @@ optionScreenUpdate :: optionScreenUpdate screen u = (uvScreenLayers . ix 0 . scDisplayTime +~ 1) . refreshOptionsSelectionList + . mouseOverSelectionList . optionScreenDefaultEffect mop . mouseClickOptionsList screen - . mouseOverSelectionList ldps screen . menuWheelEvents . over (uvScreenLayers . _head) (setSelectionListRestriction (u ^. uvConfig)) $ u where mop = _scPositionedMenuOption screen - ldps = _scListDisplayParams screen optionScreenDefaultEffect :: EscapeMenuOption -> Universe -> Universe optionScreenDefaultEffect f u = @@ -79,8 +78,11 @@ mouseClickOptionsList screen u = fromMaybe u $ do return $ f u _ -> u -mouseOverSelectionList :: ListDisplayParams -> ScreenLayer -> Universe -> Universe -mouseOverSelectionList ldps screen u = fromMaybe u $ do +mouseOverSelectionList :: Universe -> Universe +mouseOverSelectionList u = fromMaybe u $ do + screen <- u ^? uvScreenLayers . ix 0 + ldps <- screen ^? scListDisplayParams + let ymax = maybe 0 length $ screen ^? scSelectionList . slItems yi <- ldpVerticalSelection (u ^. uvConfig) ldps (u ^. uvWorld . input . mousePos) guard $ mmoving || (_scDisplayTime screen <= 1) let myi = do @@ -91,7 +93,6 @@ mouseOverSelectionList ldps screen u = fromMaybe u $ do isselectable yi = fromMaybe False $ u ^? uvScreenLayers . _head . scSelectionList . slItems . ix yi . siIsSelectable - ymax = maybe 0 length $ screen ^? scSelectionList . slItems mmoving = u ^. uvWorld . input . mouseMoving ldpVerticalSelection :: Configuration -> ListDisplayParams -> Point2 -> Maybe Int diff --git a/src/Dodge/Update/Scroll.hs b/src/Dodge/Update/Scroll.hs index e9821d72c..94fb9a3db 100644 --- a/src/Dodge/Update/Scroll.hs +++ b/src/Dodge/Update/Scroll.hs @@ -103,8 +103,8 @@ terminalWheelEvent yi tmid w scrollRBOption :: Int -> Int -> Int -> Int scrollRBOption dy ymax - | dy < 0 = (min (ymax -1) . subtract dy) - | dy > 0 = (max 0 . subtract dy) + | dy < 0 = min (ymax -1) . subtract dy + | dy > 0 = max 0 . subtract dy | otherwise = id moveTweakSel :: Int -> World -> World