mirror of
https://github.com/yume-chan/ya-webadb.git
synced 2025-10-03 09:49:24 +02:00
feat(scrcpy): improve integer scrolling accumulation
This commit is contained in:
parent
e0def5b8ac
commit
81f39bf5f3
1 changed files with 18 additions and 19 deletions
|
@ -34,33 +34,32 @@ export class ScrollController implements ScrcpyScrollController {
|
||||||
protected processMessage(
|
protected processMessage(
|
||||||
message: ScrcpyInjectScrollControlMessage,
|
message: ScrcpyInjectScrollControlMessage,
|
||||||
): ScrcpyInjectScrollControlMessage | undefined {
|
): ScrcpyInjectScrollControlMessage | undefined {
|
||||||
this.#accumulatedX += message.scrollX;
|
// Ref https://github.com/libsdl-org/SDL/blob/878ea48b607f23e4ec8c12d1395b86ab529e30d0/src/events/SDL_mouse.c#L897-L914
|
||||||
this.#accumulatedY += message.scrollY;
|
|
||||||
|
|
||||||
let scrollX = 0;
|
if (Math.sign(message.scrollX) !== Math.sign(this.#accumulatedX)) {
|
||||||
let scrollY = 0;
|
this.#accumulatedX = message.scrollX;
|
||||||
if (this.#accumulatedX >= 1) {
|
} else {
|
||||||
scrollX = 1;
|
this.#accumulatedX += message.scrollX;
|
||||||
this.#accumulatedX = 0;
|
|
||||||
} else if (this.#accumulatedX <= -1) {
|
|
||||||
scrollX = -1;
|
|
||||||
this.#accumulatedX = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.#accumulatedY >= 1) {
|
if (Math.sign(message.scrollY) !== Math.sign(this.#accumulatedY)) {
|
||||||
scrollY = 1;
|
this.#accumulatedY = message.scrollY;
|
||||||
this.#accumulatedY = 0;
|
} else {
|
||||||
} else if (this.#accumulatedY <= -1) {
|
this.#accumulatedY += message.scrollY;
|
||||||
scrollY = -1;
|
|
||||||
this.#accumulatedY = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scrollX === 0 && scrollY === 0) {
|
const integerX = this.#accumulatedX | 0;
|
||||||
|
this.#accumulatedX -= integerX;
|
||||||
|
|
||||||
|
const integerY = this.#accumulatedY | 0;
|
||||||
|
this.#accumulatedY -= integerY;
|
||||||
|
|
||||||
|
if (integerX === 0 && integerY === 0) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
message.scrollX = scrollX;
|
message.scrollX = integerX;
|
||||||
message.scrollY = scrollY;
|
message.scrollY = integerY;
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue