Opt: enter or leave

This commit is contained in:
asur4s 2022-09-05 06:19:05 -04:00
parent abf78ab6f7
commit 5dfd041d8f
3 changed files with 29 additions and 9 deletions

View File

@ -517,6 +517,19 @@ class _RemotePageState extends State<RemotePage>
}
}
void enterView(PointerEnterEvent evt) {
if (!_imageFocused) {
_physicalFocusNode.requestFocus();
}
_cursorOverImage.value = true;
_ffi.enterOrLeave(true);
}
void leaveView(PointerExitEvent evt) {
_cursorOverImage.value = false;
_ffi.enterOrLeave(false);
}
Widget _buildImageListener(Widget child) {
return Listener(
onPointerHover: _onPointHoverImage,
@ -525,15 +538,8 @@ class _RemotePageState extends State<RemotePage>
onPointerMove: _onPointMoveImage,
onPointerSignal: _onPointerSignalImage,
child: MouseRegion(
onEnter: (evt) {
if (!_imageFocused) {
_physicalFocusNode.requestFocus();
}
_cursorOverImage.value = true;
},
onExit: (evt) {
_cursorOverImage.value = false;
},
onEnter: enterView,
onExit: leaveView,
child: child));
}

View File

@ -1003,6 +1003,10 @@ class FFI {
downOrUp: down);
}
void enterOrLeave(bool enter) {
bind.sessionEnterOrLeave(id: id, enter: enter);
}
/// Send key stroke event.
/// [down] indicates the key's state(down or up).
/// [press] indicates a click event(down and up).

View File

@ -247,6 +247,16 @@ pub fn session_handle_flutter_key_event(
}
}
pub fn session_enter_or_leave(id: String, enter: bool) {
if let Some(session) = SESSIONS.read().unwrap().get(&id) {
if enter {
session.enter();
} else {
session.leave();
}
}
}
pub fn session_input_key(
id: String,
name: String,