Don't use movementX/movementY

Garbage libwebkit gtk backend gives absolute coordinates, not delta
main
kts of kettek 2024-02-09 23:13:35 -08:00
parent b8edcddd47
commit 02fcb06b3b
1 changed files with 12 additions and 3 deletions

View File

@ -85,9 +85,13 @@
function canvasMousedown(node) { function canvasMousedown(node) {
let buttons: Set<number> = new Set() let buttons: Set<number> = new Set()
let x: number = 0
let y: number = 0
node.addEventListener('mousedown', (e: MouseEvent) => { node.addEventListener('mousedown', (e: MouseEvent) => {
buttons.add(e.button) buttons.add(e.button)
x = e.clientX
y = e.clientY
}) })
node.addEventListener('wheel', (e: WheelEvent) => { node.addEventListener('wheel', (e: WheelEvent) => {
@ -110,12 +114,17 @@
window.addEventListener('mousemove', (e: MouseEvent) => { window.addEventListener('mousemove', (e: MouseEvent) => {
if (buttons.size === 0) return if (buttons.size === 0) return
let dx = e.clientX - x
let dy = e.clientY - y
x = e.clientX
y = e.clientY
if (buttons.has(0)) { if (buttons.has(0)) {
console.log('0') console.log('0')
} }
if (buttons.has(1)) { if (buttons.has(1)) {
offsetX += e.movementX offsetX += dx
offsetY += e.movementY offsetY += dy
capOffset() capOffset()
} }
if (buttons.has(2)) { if (buttons.has(2)) {
@ -135,7 +144,7 @@
</script> </script>
<main> <main>
<canvas bind:this={canvas} use:canvasMousedown></canvas> <canvas bind:this={canvas} use:canvasMousedown on:contextmenu={(e)=>e.preventDefault()}></canvas>
</main> </main>
<style> <style>