Fix clicking on timeline selecting wrong frame when scrolled

This commit is contained in:
Skyler Lehmkuhl 2024-12-24 17:24:27 -05:00
parent 9e9135f895
commit 71e2b5e4ca
1 changed files with 10 additions and 5 deletions

View File

@ -1189,10 +1189,14 @@ function vectorDist(a, b) {
return Math.sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)) return Math.sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y))
} }
function getMousePos(canvas, evt) { function getMousePos(canvas, evt, skipOffsets = false) {
var rect = canvas.getBoundingClientRect(); var rect = canvas.getBoundingClientRect();
const offsetX = canvas.offsetX || 0; let offsetX = canvas.offsetX || 0;
const offsetY = canvas.offsetY || 0; let offsetY = canvas.offsetY || 0;
if (skipOffsets) {
offsetX = 0
offsetY = 0
}
return { return {
x: (evt.clientX + offsetX - rect.left) / context.zoomLevel, x: (evt.clientX + offsetX - rect.left) / context.zoomLevel,
y: (evt.clientY + offsetY - rect.top) / context.zoomLevel y: (evt.clientY + offsetY - rect.top) / context.zoomLevel
@ -3997,10 +4001,11 @@ function timeline() {
} }
}); });
timeline_cvs.addEventListener("mousedown", (e) => { timeline_cvs.addEventListener("mousedown", (e) => {
let mouse = getMousePos(timeline_cvs, e) let mouse = getMousePos(timeline_cvs, e, true)
mouse.y += timeline_cvs.offsetY mouse.y += timeline_cvs.offsetY
if (mouse.x > layerWidth) { if (mouse.x > layerWidth) {
mouse.x += timeline_cvs.offsetX - layerWidth mouse.x -= layerWidth
mouse.x += timeline_cvs.offsetX
mouse.y -= gutterHeight mouse.y -= gutterHeight
timeline_cvs.clicked_frame = Math.floor(mouse.x / frameWidth) timeline_cvs.clicked_frame = Math.floor(mouse.x / frameWidth)
context.activeObject.setFrameNum(timeline_cvs.clicked_frame) context.activeObject.setFrameNum(timeline_cvs.clicked_frame)