Combine scroll and scroll finish commands

This commit is contained in:
Unrud 2022-02-21 22:30:18 +01:00
parent 1f3aa58568
commit ad3847f5aa
6 changed files with 19 additions and 32 deletions

View file

@ -76,6 +76,5 @@ type Backend interface {
KeyboardKey(key Key) error KeyboardKey(key Key) error
PointerButton(button PointerButton, press bool) error PointerButton(button PointerButton, press bool) error
PointerMove(deltaX, deltaY int) error PointerMove(deltaX, deltaY int) error
PointerScroll(deltaHorizontal, deltaVertical int) error PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error
PointerScrollFinish() error
} }

View file

@ -268,7 +268,7 @@ func (p *portalBackend) PointerMove(deltaX, deltaY int) error {
return nil 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() p.lock.RLock()
defer p.lock.RUnlock() defer p.lock.RUnlock()
if p.bus == nil { if p.bus == nil {
@ -282,11 +282,3 @@ func (p *portalBackend) pointerScrollFull(deltaHorizontal, deltaVertical int, fi
} }
return nil 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)
}

View file

@ -213,7 +213,7 @@ func (p *windowsBackend) PointerMove(deltaX, deltaY int) error {
return nil 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) inputs := make([]mouseInput, 0, 2)
if deltaHorizontal != 0 { if deltaHorizontal != 0 {
inputs = append(inputs, mouseInput{ inputs = append(inputs, mouseInput{
@ -239,7 +239,3 @@ func (p *windowsBackend) PointerScroll(deltaHorizontal, deltaVertical int) error
} }
return nil return nil
} }
func (p *windowsBackend) PointerScrollFinish() error {
return nil
}

View file

@ -299,12 +299,17 @@ func (p *x11Backend) PointerMove(deltaX, deltaY int) error {
return nil return nil
} }
func (p *x11Backend) PointerScroll(deltaHorizontal, deltaVertical int) error { func (p *x11Backend) PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error {
p.lock.Lock() p.lock.Lock()
stepsHorizontal := (p.scrollHorizontal + deltaHorizontal) / scrollDiv stepsHorizontal := (p.scrollHorizontal + deltaHorizontal) / scrollDiv
stepsVertical := (p.scrollVertical + deltaVertical) / scrollDiv stepsVertical := (p.scrollVertical + deltaVertical) / scrollDiv
if finish {
p.scrollHorizontal = 0
p.scrollVertical = 0
} else {
p.scrollHorizontal = (p.scrollHorizontal + deltaHorizontal) % scrollDiv p.scrollHorizontal = (p.scrollHorizontal + deltaHorizontal) % scrollDiv
p.scrollVertical = (p.scrollVertical + deltaVertical) % scrollDiv p.scrollVertical = (p.scrollVertical + deltaVertical) % scrollDiv
}
p.lock.Unlock() p.lock.Unlock()
var buttonHorizontal uint = 7 var buttonHorizontal uint = 7
if stepsHorizontal < 0 { if stepsHorizontal < 0 {
@ -334,11 +339,3 @@ func (p *x11Backend) PointerScroll(deltaHorizontal, deltaVertical int) error {
} }
return nil return nil
} }
func (p *x11Backend) PointerScrollFinish() error {
p.lock.Lock()
defer p.lock.Unlock()
p.scrollHorizontal = 0
p.scrollVertical = 0
return nil
}

View file

@ -53,8 +53,8 @@ func processCommand(backend Backend, command string) error {
if len(command) == 0 { if len(command) == 0 {
return errors.New("empty command") return errors.New("empty command")
} }
if command == "sf" { if command == "S" {
return backend.PointerScrollFinish() return backend.PointerScroll(0, 0, true)
} }
if command[0] == 't' { if command[0] == 't' {
text := command[1:] text := command[1:]
@ -89,7 +89,10 @@ func processCommand(backend Backend, command string) error {
return backend.PointerMove(int(x), int(y)) return backend.PointerMove(int(x), int(y))
} }
if command[0] == 's' { 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 command[0] == 'b' {
if x < 0 || x >= int64(PointerButtonLimit) { if x < 0 || x >= int64(PointerButtonLimit) {

View file

@ -203,7 +203,7 @@ function handleStart(evt) {
dragging = true; dragging = true;
} }
if (scrolling) { if (scrolling) {
ws.send("sf"); ws.send("S");
scrolling = false; scrolling = false;
} }
} }
@ -220,7 +220,7 @@ function handleEnd(evt) {
touchReleasedCount += 1; touchReleasedCount += 1;
touchLastEnd = evt.timeStamp; touchLastEnd = evt.timeStamp;
if (scrolling) { if (scrolling) {
ws.send("sf"); ws.send("S");
scrolling = false; scrolling = false;
} }
} }