zoom cursor on different OSs

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-02-02 13:08:41 +08:00
parent 77ee60c8dc
commit aafc2e0a8e

View File

@ -466,10 +466,19 @@ class _ImagePaintState extends State<ImagePaint> {
if (cache == null) { if (cache == null) {
return MouseCursor.defer; return MouseCursor.defer;
} else { } else {
final isViewAdaptive = bool shouldScale = false;
Provider.of<CanvasModel>(context, listen: false).viewStyle.style == if (Platform.isWindows) {
kRemoteViewStyleAdaptive; final isViewAdaptive =
final key = cache.updateGetKey(scale, zoomCursor.value && isViewAdaptive); Provider.of<CanvasModel>(context, listen: false).viewStyle.style ==
kRemoteViewStyleAdaptive;
shouldScale = zoomCursor.value && isViewAdaptive;
} else {
final isViewOriginal =
Provider.of<CanvasModel>(context, listen: false).viewStyle.style ==
kRemoteViewStyleOriginal;
shouldScale = zoomCursor.value || isViewOriginal;
}
final key = cache.updateGetKey(scale, shouldScale);
if (!cursor.cachedKeys.contains(key)) { if (!cursor.cachedKeys.contains(key)) {
debugPrint("Register custom cursor with key $key"); debugPrint("Register custom cursor with key $key");
// [Safety] // [Safety]
@ -635,8 +644,15 @@ class CursorPaint extends StatelessWidget {
double x = (m.x - hotx) * c.scale + cx; double x = (m.x - hotx) * c.scale + cx;
double y = (m.y - hoty) * c.scale + cy; double y = (m.y - hoty) * c.scale + cy;
double scale = 1.0; double scale = 1.0;
final isViewAdaptive = c.viewStyle.style == kRemoteViewStyleAdaptive; bool shouldScale = false;
if (zoomCursor.isTrue && isViewAdaptive) { if (Platform.isWindows) {
final isViewAdaptive = c.viewStyle.style == kRemoteViewStyleAdaptive;
shouldScale = zoomCursor.value && isViewAdaptive;
} else {
final isViewOriginal = c.viewStyle.style == kRemoteViewStyleOriginal;
shouldScale = zoomCursor.value || isViewOriginal;
}
if (shouldScale) {
x = m.x - hotx + cx / c.scale; x = m.x - hotx + cx / c.scale;
y = m.y - hoty + cy / c.scale; y = m.y - hoty + cy / c.scale;
scale = c.scale; scale = c.scale;