Prevent dragging items down from cycling to top

This commit is contained in:
2024-10-25 12:31:05 +01:00
parent 4da5bfa497
commit ec07e6b1a2
+14 -14
View File
@@ -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 =