Fix scrolling by mouse drag on week column.

This commit is contained in:
Leo Vasanko 2025-08-25 12:13:03 -06:00
parent 789ac0ad1b
commit 4367480f1c

View File

@ -135,6 +135,7 @@ const isWeekColDragging = ref(false)
let weekColDragStartScroll = 0
let weekColAccum = 0
let weekColPointerLocked = false
let weekColLastY = 0
function scheduleRebuild(reason) {
if (pendingRebuild) return
@ -528,6 +529,7 @@ function handleWeekColMouseDown(e) {
isWeekColDragging.value = true
weekColDragStartScroll = viewport.value.scrollTop
weekColAccum = 0
weekColLastY = e.clientY
if (viewport.value.requestPointerLock) viewport.value.requestPointerLock()
window.addEventListener('mousemove', handleWeekColMouseMove, { passive: false })
window.addEventListener('mouseup', handleWeekColMouseUp, { passive: false })
@ -537,11 +539,17 @@ function handleWeekColMouseDown(e) {
function handleWeekColMouseMove(e) {
if (!isWeekColDragging.value || !viewport.value) return
const dy = weekColPointerLocked ? e.movementY : e.clientY // movementY if locked
let dy
if (weekColPointerLocked) {
dy = e.movementY
} else {
dy = e.clientY - weekColLastY
weekColLastY = e.clientY
}
weekColAccum += dy
let desired = weekColDragStartScroll - weekColAccum
if (desired < 0) desired = 0
const maxScroll = Math.max(0, contentHeight.value - viewportHeight.value)
const maxScroll = Math.max(0, contentHeight.value - viewportHeight.vale)
if (desired > maxScroll) desired = maxScroll
viewport.value.scrollTop = desired
e.preventDefault()