flutter_desktop: fix cursor image when cursor moved in from other window
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
551c5ecddf
commit
488e619bc4
@ -1113,3 +1113,12 @@ Future<Map<String, String>> getHttpHeaders() async {
|
|||||||
'Bearer ${await bind.mainGetLocalOption(key: 'access_token')}'
|
'Bearer ${await bind.mainGetLocalOption(key: 'access_token')}'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Simple wrapper of built-in types for refrence use.
|
||||||
|
class SimpleWrapper<T> {
|
||||||
|
T t;
|
||||||
|
SimpleWrapper(this.t);
|
||||||
|
|
||||||
|
T get value => t;
|
||||||
|
set value(T t) => this.t = t;
|
||||||
|
}
|
||||||
|
@ -20,6 +20,7 @@ import '../../models/platform_model.dart';
|
|||||||
import '../../common/shared_state.dart';
|
import '../../common/shared_state.dart';
|
||||||
|
|
||||||
bool _isCustomCursorInited = false;
|
bool _isCustomCursorInited = false;
|
||||||
|
final SimpleWrapper<bool> _firstEnterImage = SimpleWrapper(false);
|
||||||
|
|
||||||
class RemotePage extends StatefulWidget {
|
class RemotePage extends StatefulWidget {
|
||||||
const RemotePage({
|
const RemotePage({
|
||||||
@ -102,6 +103,10 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
if (!_isCustomCursorInited) {
|
if (!_isCustomCursorInited) {
|
||||||
customCursorController.registerNeedUpdateCursorCallback(
|
customCursorController.registerNeedUpdateCursorCallback(
|
||||||
(String? lastKey, String? currentKey) async {
|
(String? lastKey, String? currentKey) async {
|
||||||
|
if (_firstEnterImage.value) {
|
||||||
|
_firstEnterImage.value = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return lastKey == null || lastKey != currentKey;
|
return lastKey == null || lastKey != currentKey;
|
||||||
});
|
});
|
||||||
_isCustomCursorInited = true;
|
_isCustomCursorInited = true;
|
||||||
@ -172,6 +177,7 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
_rawKeyFocusNode.requestFocus();
|
_rawKeyFocusNode.requestFocus();
|
||||||
}
|
}
|
||||||
_cursorOverImage.value = true;
|
_cursorOverImage.value = true;
|
||||||
|
_firstEnterImage.value = true;
|
||||||
if (_onEnterOrLeaveImage4Menubar != null) {
|
if (_onEnterOrLeaveImage4Menubar != null) {
|
||||||
try {
|
try {
|
||||||
_onEnterOrLeaveImage4Menubar!(true);
|
_onEnterOrLeaveImage4Menubar!(true);
|
||||||
@ -184,6 +190,7 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
|
|
||||||
void leaveView(PointerExitEvent evt) {
|
void leaveView(PointerExitEvent evt) {
|
||||||
_cursorOverImage.value = false;
|
_cursorOverImage.value = false;
|
||||||
|
_firstEnterImage.value = false;
|
||||||
if (_onEnterOrLeaveImage4Menubar != null) {
|
if (_onEnterOrLeaveImage4Menubar != null) {
|
||||||
try {
|
try {
|
||||||
_onEnterOrLeaveImage4Menubar!(false);
|
_onEnterOrLeaveImage4Menubar!(false);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user