Update cursor id immediately after the cursor event

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-10-03 22:15:58 +08:00
parent 197a9330df
commit 5d6d8e68ed

View File

@ -203,10 +203,12 @@ class FfiModel with ChangeNotifier {
updatePrivacyMode(data.updatePrivacyMode, sessionId, peerId); updatePrivacyMode(data.updatePrivacyMode, sessionId, peerId);
setConnectionType(peerId, data.secure, data.direct); setConnectionType(peerId, data.secure, data.direct);
await handlePeerInfo(data.peerInfo, peerId); await handlePeerInfo(data.peerInfo, peerId);
for (var element in data.cursorDataList) { for (final element in data.cursorDataList) {
updateLastCursorId(element);
await handleCursorData(element); await handleCursorData(element);
} }
await handleCursorId(data.lastCursorId); updateLastCursorId(data.lastCursorId);
handleCursorId(data.lastCursorId);
} }
// todo: why called by two position // todo: why called by two position
@ -225,9 +227,11 @@ class FfiModel with ChangeNotifier {
} else if (name == 'switch_display') { } else if (name == 'switch_display') {
handleSwitchDisplay(evt, sessionId, peerId); handleSwitchDisplay(evt, sessionId, peerId);
} else if (name == 'cursor_data') { } else if (name == 'cursor_data') {
updateLastCursorId(evt);
await handleCursorData(evt); await handleCursorData(evt);
} else if (name == 'cursor_id') { } else if (name == 'cursor_id') {
await handleCursorId(evt); updateLastCursorId(evt);
handleCursorId(evt);
} else if (name == 'cursor_position') { } else if (name == 'cursor_position') {
await parent.target?.cursorModel.updateCursorPosition(evt, peerId); await parent.target?.cursorModel.updateCursorPosition(evt, peerId);
} else if (name == 'clipboard') { } else if (name == 'clipboard') {
@ -651,9 +655,13 @@ class FfiModel with ChangeNotifier {
return d; return d;
} }
handleCursorId(Map<String, dynamic> evt) async { updateLastCursorId(Map<String, dynamic> evt) {
parent.target?.cursorModel.id = int.parse(evt['id']);
}
handleCursorId(Map<String, dynamic> evt) {
cachedPeerData.lastCursorId = evt; cachedPeerData.lastCursorId = evt;
await parent.target?.cursorModel.updateCursorId(evt); parent.target?.cursorModel.updateCursorId(evt);
} }
handleCursorData(Map<String, dynamic> evt) async { handleCursorData(Map<String, dynamic> evt) async {
@ -1302,6 +1310,8 @@ class CursorModel with ChangeNotifier {
double get hotx => _hotx; double get hotx => _hotx;
double get hoty => _hoty; double get hoty => _hoty;
set id(int id) => _id = id;
bool get isPeerControlProtected => bool get isPeerControlProtected =>
DateTime.now().difference(_lastPeerMouse).inMilliseconds < DateTime.now().difference(_lastPeerMouse).inMilliseconds <
kMouseControlTimeoutMSec; kMouseControlTimeoutMSec;
@ -1441,8 +1451,6 @@ class CursorModel with ChangeNotifier {
updateCursorData(Map<String, dynamic> evt) async { updateCursorData(Map<String, dynamic> evt) async {
final id = int.parse(evt['id']); final id = int.parse(evt['id']);
// Update last cursor id.
_id = id;
final hotx = double.parse(evt['hotx']); final hotx = double.parse(evt['hotx']);
final hoty = double.parse(evt['hoty']); final hoty = double.parse(evt['hoty']);
final width = int.parse(evt['width']); final width = int.parse(evt['width']);
@ -1517,8 +1525,7 @@ class CursorModel with ChangeNotifier {
} }
} }
updateCursorId(Map<String, dynamic> evt) async { updateCursorId(Map<String, dynamic> evt) {
_id = int.parse(evt['id']);
if (!_updateCurData()) { if (!_updateCurData()) {
debugPrint( debugPrint(
'WARNING: updateCursorId $_id, cache is ${_cache == null ? "null" : "not null"}. without notifyListeners()'); 'WARNING: updateCursorId $_id, cache is ${_cache == null ? "null" : "not null"}. without notifyListeners()');