Merge pull request #4787 from dignow/refact/touchpad_scroll
Refact/touchpad scroll
This commit is contained in:
commit
36753e00ca
@ -51,6 +51,9 @@ class InputModel {
|
|||||||
var _fling = false;
|
var _fling = false;
|
||||||
Timer? _flingTimer;
|
Timer? _flingTimer;
|
||||||
final _flingBaseDelay = 30;
|
final _flingBaseDelay = 30;
|
||||||
|
// trackpad, peer linux
|
||||||
|
final _trackpadSpeed = 0.06;
|
||||||
|
var _trackpadScrollUnsent = Offset.zero;
|
||||||
|
|
||||||
// mouse
|
// mouse
|
||||||
final isPhysicalMouse = false.obs;
|
final isPhysicalMouse = false.obs;
|
||||||
@ -334,8 +337,24 @@ class InputModel {
|
|||||||
void onPointerPanZoomUpdate(PointerPanZoomUpdateEvent e) {
|
void onPointerPanZoomUpdate(PointerPanZoomUpdateEvent e) {
|
||||||
final delta = e.panDelta;
|
final delta = e.panDelta;
|
||||||
_trackpadLastDelta = delta;
|
_trackpadLastDelta = delta;
|
||||||
|
|
||||||
var x = delta.dx.toInt();
|
var x = delta.dx.toInt();
|
||||||
var y = delta.dy.toInt();
|
var y = delta.dy.toInt();
|
||||||
|
if (parent.target?.ffiModel.pi.platform == kPeerPlatformLinux) {
|
||||||
|
_trackpadScrollUnsent += (delta * _trackpadSpeed);
|
||||||
|
x = _trackpadScrollUnsent.dx.truncate();
|
||||||
|
y = _trackpadScrollUnsent.dy.truncate();
|
||||||
|
_trackpadScrollUnsent -= Offset(x.toDouble(), y.toDouble());
|
||||||
|
} else {
|
||||||
|
if (x == 0 && y == 0) {
|
||||||
|
final thr = 0.1;
|
||||||
|
if (delta.dx.abs() > delta.dy.abs()) {
|
||||||
|
x = delta.dx > thr ? 1 : (delta.dx < -thr ? -1 : 0);
|
||||||
|
} else {
|
||||||
|
y = delta.dy > thr ? 1 : (delta.dy < -thr ? -1 : 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (x != 0 || y != 0) {
|
if (x != 0 || y != 0) {
|
||||||
bind.sessionSendMouse(
|
bind.sessionSendMouse(
|
||||||
sessionId: sessionId,
|
sessionId: sessionId,
|
||||||
@ -362,6 +381,11 @@ class InputModel {
|
|||||||
// Try set delta (x,y) and delay.
|
// Try set delta (x,y) and delay.
|
||||||
var dx = x.toInt();
|
var dx = x.toInt();
|
||||||
var dy = y.toInt();
|
var dy = y.toInt();
|
||||||
|
if (parent.target?.ffiModel.pi.platform == kPeerPlatformLinux) {
|
||||||
|
dx = (x * _trackpadSpeed).toInt();
|
||||||
|
dy = (y * _trackpadSpeed).toInt();
|
||||||
|
}
|
||||||
|
|
||||||
var delay = _flingBaseDelay;
|
var delay = _flingBaseDelay;
|
||||||
|
|
||||||
if (dx == 0 && dy == 0) {
|
if (dx == 0 && dy == 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user