Major new version #2
@ -135,6 +135,7 @@ const isWeekColDragging = ref(false)
|
|||||||
let weekColDragStartScroll = 0
|
let weekColDragStartScroll = 0
|
||||||
let weekColAccum = 0
|
let weekColAccum = 0
|
||||||
let weekColPointerLocked = false
|
let weekColPointerLocked = false
|
||||||
|
let weekColLastY = 0
|
||||||
|
|
||||||
function scheduleRebuild(reason) {
|
function scheduleRebuild(reason) {
|
||||||
if (pendingRebuild) return
|
if (pendingRebuild) return
|
||||||
@ -528,6 +529,7 @@ function handleWeekColMouseDown(e) {
|
|||||||
isWeekColDragging.value = true
|
isWeekColDragging.value = true
|
||||||
weekColDragStartScroll = viewport.value.scrollTop
|
weekColDragStartScroll = viewport.value.scrollTop
|
||||||
weekColAccum = 0
|
weekColAccum = 0
|
||||||
|
weekColLastY = e.clientY
|
||||||
if (viewport.value.requestPointerLock) viewport.value.requestPointerLock()
|
if (viewport.value.requestPointerLock) viewport.value.requestPointerLock()
|
||||||
window.addEventListener('mousemove', handleWeekColMouseMove, { passive: false })
|
window.addEventListener('mousemove', handleWeekColMouseMove, { passive: false })
|
||||||
window.addEventListener('mouseup', handleWeekColMouseUp, { passive: false })
|
window.addEventListener('mouseup', handleWeekColMouseUp, { passive: false })
|
||||||
@ -537,11 +539,17 @@ function handleWeekColMouseDown(e) {
|
|||||||
|
|
||||||
function handleWeekColMouseMove(e) {
|
function handleWeekColMouseMove(e) {
|
||||||
if (!isWeekColDragging.value || !viewport.value) return
|
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
|
weekColAccum += dy
|
||||||
let desired = weekColDragStartScroll - weekColAccum
|
let desired = weekColDragStartScroll - weekColAccum
|
||||||
if (desired < 0) desired = 0
|
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
|
if (desired > maxScroll) desired = maxScroll
|
||||||
viewport.value.scrollTop = desired
|
viewport.value.scrollTop = desired
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user