Merge pull request #1875 from fufesou/flutter_win_cursor

Flutter win cursor
This commit is contained in:
RustDesk
2022-10-30 19:11:42 +08:00
committed by GitHub
7 changed files with 147 additions and 57 deletions

View File

@@ -284,7 +284,7 @@ class ImagePaint extends StatelessWidget {
? keyboardEnabled.isTrue
? (remoteCursorMoved.isTrue
? SystemMouseCursors.none
: _buildCustomCursorLinux(context, s))
: _buildCustomCursor(context, s))
: _buildDisabledCursor(context, s)
: MouseCursor.defer,
onHover: (evt) {},
@@ -333,41 +333,43 @@ class ImagePaint extends StatelessWidget {
}
}
MouseCursor _buildCustomCursorLinux(BuildContext context, double scale) {
MouseCursor _buildCustomCursor(BuildContext context, double scale) {
final cursor = Provider.of<CursorModel>(context);
final cacheLinux = cursor.cacheLinux;
if (cacheLinux == null) {
final cache = cursor.cache ?? cursor.defaultCache;
if (cache == null) {
return MouseCursor.defer;
} else {
final key = cacheLinux.key(scale);
cursor.addKeyLinux(key);
final key = cache.updateGetKey(scale);
cursor.addKey(key);
return FlutterCustomMemoryImageCursor(
pixbuf: cacheLinux.data,
pixbuf: cache.data,
key: key,
hotx: cacheLinux.hotx,
hoty: cacheLinux.hoty,
imageWidth: (cacheLinux.width * scale).toInt(),
imageHeight: (cacheLinux.height * scale).toInt(),
// hotx: cache.hotx,
// hoty: cache.hoty,
hotx: 0,
hoty: 0,
imageWidth: (cache.width * cache.scale).toInt(),
imageHeight: (cache.height * cache.scale).toInt(),
);
}
}
MouseCursor _buildDisabledCursor(BuildContext context, double scale) {
final cursor = Provider.of<CursorModel>(context);
final cacheLinux = cursor.cacheLinux;
if (cacheLinux == null) {
final cache = cursor.cache;
if (cache == null) {
return MouseCursor.defer;
} else {
if (cursor.cachedForbidmemoryCursorData == null) {
cursor.updateForbiddenCursorBuffer();
}
final key = 'disabled_cursor_key';
cursor.addKeyLinux(key);
cursor.addKey(key);
return FlutterCustomMemoryImageCursor(
pixbuf: cursor.cachedForbidmemoryCursorData,
key: key,
hotx: cacheLinux.hotx,
hoty: cacheLinux.hoty,
hotx: 0,
hoty: 0,
imageWidth: 32,
imageHeight: 32,
);