From ad3847f5aa9f78a15aa89cd01d4360a7ccf8b249 Mon Sep 17 00:00:00 2001 From: Unrud Date: Mon, 21 Feb 2022 22:30:18 +0100 Subject: [PATCH] Combine scroll and scroll finish commands --- backend.go | 3 +-- backend_portal.go | 10 +--------- backend_windows.go | 6 +----- backend_x11.go | 19 ++++++++----------- main.go | 9 ++++++--- webdata/fn.js | 4 ++-- 6 files changed, 19 insertions(+), 32 deletions(-) diff --git a/backend.go b/backend.go index 0a6cc92..732ea6b 100644 --- a/backend.go +++ b/backend.go @@ -76,6 +76,5 @@ type Backend interface { KeyboardKey(key Key) error PointerButton(button PointerButton, press bool) error PointerMove(deltaX, deltaY int) error - PointerScroll(deltaHorizontal, deltaVertical int) error - PointerScrollFinish() error + PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error } diff --git a/backend_portal.go b/backend_portal.go index d85cae1..d4d9bc7 100644 --- a/backend_portal.go +++ b/backend_portal.go @@ -268,7 +268,7 @@ func (p *portalBackend) PointerMove(deltaX, deltaY int) error { return nil } -func (p *portalBackend) pointerScrollFull(deltaHorizontal, deltaVertical int, finish bool) error { +func (p *portalBackend) PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error { p.lock.RLock() defer p.lock.RUnlock() if p.bus == nil { @@ -282,11 +282,3 @@ func (p *portalBackend) pointerScrollFull(deltaHorizontal, deltaVertical int, fi } return nil } - -func (p *portalBackend) PointerScroll(deltaHorizontal, deltaVertical int) error { - return p.pointerScrollFull(deltaHorizontal, deltaVertical, false) -} - -func (p *portalBackend) PointerScrollFinish() error { - return p.pointerScrollFull(0, 0, true) -} diff --git a/backend_windows.go b/backend_windows.go index a4931e9..49b4faa 100644 --- a/backend_windows.go +++ b/backend_windows.go @@ -213,7 +213,7 @@ func (p *windowsBackend) PointerMove(deltaX, deltaY int) error { return nil } -func (p *windowsBackend) PointerScroll(deltaHorizontal, deltaVertical int) error { +func (p *windowsBackend) PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error { inputs := make([]mouseInput, 0, 2) if deltaHorizontal != 0 { inputs = append(inputs, mouseInput{ @@ -239,7 +239,3 @@ func (p *windowsBackend) PointerScroll(deltaHorizontal, deltaVertical int) error } return nil } - -func (p *windowsBackend) PointerScrollFinish() error { - return nil -} diff --git a/backend_x11.go b/backend_x11.go index ad3445b..3eec2ee 100644 --- a/backend_x11.go +++ b/backend_x11.go @@ -299,12 +299,17 @@ func (p *x11Backend) PointerMove(deltaX, deltaY int) error { return nil } -func (p *x11Backend) PointerScroll(deltaHorizontal, deltaVertical int) error { +func (p *x11Backend) PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error { p.lock.Lock() stepsHorizontal := (p.scrollHorizontal + deltaHorizontal) / scrollDiv stepsVertical := (p.scrollVertical + deltaVertical) / scrollDiv - p.scrollHorizontal = (p.scrollHorizontal + deltaHorizontal) % scrollDiv - p.scrollVertical = (p.scrollVertical + deltaVertical) % scrollDiv + if finish { + p.scrollHorizontal = 0 + p.scrollVertical = 0 + } else { + p.scrollHorizontal = (p.scrollHorizontal + deltaHorizontal) % scrollDiv + p.scrollVertical = (p.scrollVertical + deltaVertical) % scrollDiv + } p.lock.Unlock() var buttonHorizontal uint = 7 if stepsHorizontal < 0 { @@ -334,11 +339,3 @@ func (p *x11Backend) PointerScroll(deltaHorizontal, deltaVertical int) error { } return nil } - -func (p *x11Backend) PointerScrollFinish() error { - p.lock.Lock() - defer p.lock.Unlock() - p.scrollHorizontal = 0 - p.scrollVertical = 0 - return nil -} diff --git a/main.go b/main.go index ffb4f98..5eef862 100644 --- a/main.go +++ b/main.go @@ -53,8 +53,8 @@ func processCommand(backend Backend, command string) error { if len(command) == 0 { return errors.New("empty command") } - if command == "sf" { - return backend.PointerScrollFinish() + if command == "S" { + return backend.PointerScroll(0, 0, true) } if command[0] == 't' { text := command[1:] @@ -89,7 +89,10 @@ func processCommand(backend Backend, command string) error { return backend.PointerMove(int(x), int(y)) } if command[0] == 's' { - return backend.PointerScroll(int(x), int(y)) + return backend.PointerScroll(int(x), int(y), false) + } + if command[0] == 'S' { + return backend.PointerScroll(int(x), int(y), true) } if command[0] == 'b' { if x < 0 || x >= int64(PointerButtonLimit) { diff --git a/webdata/fn.js b/webdata/fn.js index 8df8bec..1730780 100644 --- a/webdata/fn.js +++ b/webdata/fn.js @@ -203,7 +203,7 @@ function handleStart(evt) { dragging = true; } if (scrolling) { - ws.send("sf"); + ws.send("S"); scrolling = false; } } @@ -220,7 +220,7 @@ function handleEnd(evt) { touchReleasedCount += 1; touchLastEnd = evt.timeStamp; if (scrolling) { - ws.send("sf"); + ws.send("S"); scrolling = false; } }