From ec07e6b1a26dc7b754ccb947b0520b3730bbd61e Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 25 Oct 2024 12:31:05 +0100 Subject: [PATCH] Prevent dragging items down from cycling to top --- src/Dodge/Update.hs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 2f34cec66..82fbe39d7 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -355,29 +355,29 @@ shiftInvItems :: SelectionSections a -> World -> World -shiftInvItems topsel cfig mpos ldp sss w = case inverseSelBoundaryUp cfig ldp sss mpos of - Just p | p < topsel -> shiftInvItemsUp topsel w - _ -> fromMaybe w $ do - x <- w ^? hud . hudElement . diSelectionExtra - return $ case inverseSelBoundaryDown cfig ldp sss mpos of - Just p | p > (topsel & _2 +~ x) -> shiftInvItemsDown topsel x w - _ -> w +shiftInvItems topsel cfig mpos ldp sss w = fromMaybe w $ do + x <- w ^? hud . hudElement . diSelectionExtra + return $ case inverseSelBoundaryUp cfig ldp sss mpos of + Just p | p < topsel -> shiftInvItemsUp topsel x w + _ -> case inverseSelBoundaryDown cfig ldp sss mpos of + Just p | p > (topsel & _2 +~ x) -> shiftInvItemsDown topsel x w + _ -> w where mysel = inverseSelSecYint (posSelSecYint cfig ldp (mpos ^. _y)) sss -shiftInvItemsUp :: (Int, Int) -> World -> World -shiftInvItemsUp (_, i) w = fromMaybe w $ do - x <- w ^? hud . hudElement . diSelectionExtra - return $ foldl' f w [i .. i + x] +shiftInvItemsUp :: (Int, Int) -> Int -> World -> World +shiftInvItemsUp (_, i) x w = foldl' f w [i .. i + x] where f w' i' = swapInvItems g i' w' - g i' m = fmap fst $ IM.cycleLT i' m + g i' m = fmap fst $ IM.lookupLT i' m shiftInvItemsDown :: (Int, Int) -> Int -> World -> World -shiftInvItemsDown (_, i) x w = foldl' f w $ reverse [i .. i + x] +shiftInvItemsDown (_, i) x w = fromMaybe w $ do + guard $ isJust $ w ^? hud . hudElement . diSections . sssSections . ix 0 . ssItems . ix (i + x + 1) + return $ foldl' f w $ reverse [i .. i + x] where f w' i' = swapInvItems g i' w' - g i' m = fmap fst $ IM.cycleGT i' m + g i' m = fmap fst $ IM.lookupGT i' m --shiftInvItemsUp :: (Int, Int) -> (Int, Int) -> Maybe (Int, Int) -> World -> World --shiftInvItemsUp (_, i) (_, j) Just{} w =