This commit is contained in:
bryanthaboi
2026-08-03 16:19:39 -04:00
parent 4a00f2335c
commit 56d92246cb
2 changed files with 40 additions and 2 deletions
+33
View File
@@ -729,6 +729,15 @@ function ScrollManager:getState()
_overflowY = self._overflowY,
_contentWidth = self._contentWidth,
_contentHeight = self._contentHeight,
-- Touch fling state: without these, immediate-mode recreation zeroes the
-- release velocity on the next frame and momentum scrolling never runs.
_touchScrolling = self._touchScrolling or false,
_momentumScrolling = self._momentumScrolling or false,
_scrollVelocityX = self._scrollVelocityX or 0,
_scrollVelocityY = self._scrollVelocityY or 0,
_lastTouchTime = self._lastTouchTime or 0,
_lastTouchX = self._lastTouchX or 0,
_lastTouchY = self._lastTouchY or 0,
}
end
@@ -834,6 +843,30 @@ function ScrollManager:setState(state)
if state._targetScrollY ~= nil then
self._targetScrollY = state._targetScrollY
end
-- Touch fling state (see getState): restore so momentum survives
-- immediate-mode element recreation between frames.
if state._touchScrolling ~= nil then
self._touchScrolling = state._touchScrolling
end
if state._momentumScrolling ~= nil then
self._momentumScrolling = state._momentumScrolling
end
if state._scrollVelocityX ~= nil then
self._scrollVelocityX = state._scrollVelocityX
end
if state._scrollVelocityY ~= nil then
self._scrollVelocityY = state._scrollVelocityY
end
if state._lastTouchTime ~= nil then
self._lastTouchTime = state._lastTouchTime
end
if state._lastTouchX ~= nil then
self._lastTouchX = state._lastTouchX
end
if state._lastTouchY ~= nil then
self._lastTouchY = state._lastTouchY
end
end
--- Handle touch press for scrolling
+7 -2
View File
@@ -78,8 +78,13 @@ local function mk(props)
if props.flexShrink == nil then
props.flexShrink = isScrollOverflow(props) and 1 or 0
end
if isScrollOverflow(props) and props.minHeight == nil then
props.minHeight = 0
if isScrollOverflow(props) then
if props.minHeight == nil then props.minHeight = 0 end
-- Every launcher list scrolls like a native one: interpolated wheel
-- steps instead of hard 20px jumps, and a bigger per-notch distance so
-- long save/mod lists don't take dozens of notches to traverse.
if props.smoothScrollEnabled == nil then props.smoothScrollEnabled = true end
if props.scrollSpeed == nil then props.scrollSpeed = 60 end
end
-- Resolve "100%" here, against the parent's CONTENT width: the engine
-- resolves a percentage against the parent's border box and ignores its