tmp commit
Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
parent
8999bbf297
commit
933c99110c
@ -62,11 +62,11 @@ class InputModel {
|
|||||||
int _lastButtons = 0;
|
int _lastButtons = 0;
|
||||||
Offset lastMousePos = Offset.zero;
|
Offset lastMousePos = Offset.zero;
|
||||||
|
|
||||||
get id => parent.target?.id ?? "";
|
|
||||||
|
|
||||||
late final SessionID sessionId;
|
late final SessionID sessionId;
|
||||||
|
|
||||||
bool get keyboardPerm => parent.target!.ffiModel.keyboard;
|
bool get keyboardPerm => parent.target!.ffiModel.keyboard;
|
||||||
|
String get id => parent.target?.id ?? '';
|
||||||
|
String? get peerPlatform => parent.target?.ffiModel.pi.platform;
|
||||||
|
|
||||||
InputModel(this.parent) {
|
InputModel(this.parent) {
|
||||||
sessionId = parent.target!.sessionId;
|
sessionId = parent.target!.sessionId;
|
||||||
@ -334,21 +334,26 @@ class InputModel {
|
|||||||
void onPointerPanZoomStart(PointerPanZoomStartEvent e) {
|
void onPointerPanZoomStart(PointerPanZoomStartEvent e) {
|
||||||
_lastScale = 1.0;
|
_lastScale = 1.0;
|
||||||
_stopFling = true;
|
_stopFling = true;
|
||||||
handlePointerEvent('touch', 'pan_start', e);
|
|
||||||
|
if (peerPlatform == kPeerPlatformAndroid) {
|
||||||
|
handlePointerEvent('touch', 'pan_start', e.position);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://docs.flutter.dev/release/breaking-changes/trackpad-gestures
|
// https://docs.flutter.dev/release/breaking-changes/trackpad-gestures
|
||||||
void onPointerPanZoomUpdate(PointerPanZoomUpdateEvent e) {
|
void onPointerPanZoomUpdate(PointerPanZoomUpdateEvent e) {
|
||||||
final scale = ((e.scale - _lastScale) * 1000).toInt();
|
if (peerPlatform != kPeerPlatformAndroid) {
|
||||||
_lastScale = e.scale;
|
final scale = ((e.scale - _lastScale) * 1000).toInt();
|
||||||
|
_lastScale = e.scale;
|
||||||
|
|
||||||
if (scale != 0) {
|
if (scale != 0) {
|
||||||
bind.sessionSendPointer(
|
bind.sessionSendPointer(
|
||||||
sessionId: sessionId,
|
sessionId: sessionId,
|
||||||
msg: json.encode({
|
msg: json.encode({
|
||||||
'touch': {'scale': scale}
|
'touch': {'scale': scale}
|
||||||
}));
|
}));
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final delta = e.panDelta;
|
final delta = e.panDelta;
|
||||||
@ -356,7 +361,8 @@ class InputModel {
|
|||||||
|
|
||||||
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) {
|
if (peerPlatform == kPeerPlatformLinux ||
|
||||||
|
peerPlatform == kPeerPlatformAndroid) {
|
||||||
_trackpadScrollUnsent += (delta * _trackpadSpeed);
|
_trackpadScrollUnsent += (delta * _trackpadSpeed);
|
||||||
x = _trackpadScrollUnsent.dx.truncate();
|
x = _trackpadScrollUnsent.dx.truncate();
|
||||||
y = _trackpadScrollUnsent.dy.truncate();
|
y = _trackpadScrollUnsent.dy.truncate();
|
||||||
@ -372,9 +378,13 @@ class InputModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (x != 0 || y != 0) {
|
if (x != 0 || y != 0) {
|
||||||
bind.sessionSendMouse(
|
if (peerPlatform == kPeerPlatformAndroid) {
|
||||||
sessionId: sessionId,
|
handlePointerEvent('touch', 'pan_move', e.delta);
|
||||||
msg: '{"type": "trackpad", "x": "$x", "y": "$y"}');
|
} else {
|
||||||
|
bind.sessionSendMouse(
|
||||||
|
sessionId: sessionId,
|
||||||
|
msg: '{"type": "trackpad", "x": "$x", "y": "$y"}');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -430,6 +440,11 @@ class InputModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onPointerPanZoomEnd(PointerPanZoomEndEvent e) {
|
void onPointerPanZoomEnd(PointerPanZoomEndEvent e) {
|
||||||
|
if (peerPlatform == kPeerPlatformAndroid) {
|
||||||
|
handlePointerEvent('touch', 'pan_end', e.position);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
bind.sessionSendPointer(
|
bind.sessionSendPointer(
|
||||||
sessionId: sessionId,
|
sessionId: sessionId,
|
||||||
msg: json.encode({
|
msg: json.encode({
|
||||||
@ -541,23 +556,39 @@ class InputModel {
|
|||||||
return Offset(x, y);
|
return Offset(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handlePointerEvent(String kind, String type, PointerEvent e) {
|
void handlePointerEvent(String kind, String type, Offset offset) {
|
||||||
if (checkPeerControlProtected(e.position.dx, max(0.0, e.position.dy))) {
|
double x = offset.dx;
|
||||||
|
double y = max(0.0, offset.dy);
|
||||||
|
if (_checkPeerControlProtected(x, y)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Only touch events are handled for now. So we can just ignore buttons.
|
// Only touch events are handled for now. So we can just ignore buttons.
|
||||||
// to-do: handle mouse events
|
// to-do: handle mouse events
|
||||||
bind.sessionSendPointer(
|
|
||||||
sessionId: sessionId,
|
final isMoveTypes = ['pan', 'pan_start', 'pan_end'];
|
||||||
msg: json.encode({
|
final pos = handlePointerDevicePos(
|
||||||
modify({
|
x,
|
||||||
kind: {type: e.position.toString()}
|
y,
|
||||||
})
|
isMoveTypes.contains(type),
|
||||||
}),
|
type,
|
||||||
);
|
);
|
||||||
|
if (pos == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final evt = {
|
||||||
|
kind: {
|
||||||
|
type: {
|
||||||
|
'x': '${pos.x}',
|
||||||
|
'y': '${pos.y}',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
bind.sessionSendPointer(
|
||||||
|
sessionId: sessionId, msg: json.encode({modify(evt)}));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool checkPeerControlProtected(double x, double y) {
|
bool _checkPeerControlProtected(double x, double y) {
|
||||||
final cursorModel = parent.target!.cursorModel;
|
final cursorModel = parent.target!.cursorModel;
|
||||||
if (cursorModel.isPeerControlProtected) {
|
if (cursorModel.isPeerControlProtected) {
|
||||||
lastMousePos = ui.Offset(x, y);
|
lastMousePos = ui.Offset(x, y);
|
||||||
@ -586,7 +617,7 @@ class InputModel {
|
|||||||
}) {
|
}) {
|
||||||
double x = offset.dx;
|
double x = offset.dx;
|
||||||
double y = max(0.0, offset.dy);
|
double y = max(0.0, offset.dy);
|
||||||
if (checkPeerControlProtected(x, y)) {
|
if (_checkPeerControlProtected(x, y)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user