fix float error in small resolution

This commit is contained in:
csf 2022-05-11 22:34:41 +08:00
parent 49dc99f170
commit 9920fee4ea

View File

@ -528,8 +528,9 @@ class CursorModel with ChangeNotifier {
var cy = r.center.dy; var cy = r.center.dy;
var tryMoveCanvasX = false; var tryMoveCanvasX = false;
if (dx > 0) { if (dx > 0) {
final maxCanvasCanMove = final maxCanvasCanMove = _displayOriginX +
_displayOriginX + FFI.imageModel.image!.width - r.right; FFI.imageModel.image!.width -
r.right.roundToDouble();
tryMoveCanvasX = _x + dx > cx && maxCanvasCanMove > 0; tryMoveCanvasX = _x + dx > cx && maxCanvasCanMove > 0;
if (tryMoveCanvasX) { if (tryMoveCanvasX) {
dx = min(dx, maxCanvasCanMove); dx = min(dx, maxCanvasCanMove);
@ -538,7 +539,7 @@ class CursorModel with ChangeNotifier {
dx = min(dx, maxCursorCanMove); dx = min(dx, maxCursorCanMove);
} }
} else if (dx < 0) { } else if (dx < 0) {
final maxCanvasCanMove = _displayOriginX - r.left; final maxCanvasCanMove = _displayOriginX - r.left.roundToDouble();
tryMoveCanvasX = _x + dx < cx && maxCanvasCanMove < 0; tryMoveCanvasX = _x + dx < cx && maxCanvasCanMove < 0;
if (tryMoveCanvasX) { if (tryMoveCanvasX) {
dx = max(dx, maxCanvasCanMove); dx = max(dx, maxCanvasCanMove);
@ -549,8 +550,9 @@ class CursorModel with ChangeNotifier {
} }
var tryMoveCanvasY = false; var tryMoveCanvasY = false;
if (dy > 0) { if (dy > 0) {
final mayCanvasCanMove = final mayCanvasCanMove = _displayOriginY +
_displayOriginY + FFI.imageModel.image!.height - r.bottom; FFI.imageModel.image!.height -
r.bottom.roundToDouble();
tryMoveCanvasY = _y + dy > cy && mayCanvasCanMove > 0; tryMoveCanvasY = _y + dy > cy && mayCanvasCanMove > 0;
if (tryMoveCanvasY) { if (tryMoveCanvasY) {
dy = min(dy, mayCanvasCanMove); dy = min(dy, mayCanvasCanMove);
@ -559,7 +561,7 @@ class CursorModel with ChangeNotifier {
dy = min(dy, mayCursorCanMove); dy = min(dy, mayCursorCanMove);
} }
} else if (dy < 0) { } else if (dy < 0) {
final mayCanvasCanMove = _displayOriginY - r.top; final mayCanvasCanMove = _displayOriginY - r.top.roundToDouble();
tryMoveCanvasY = _y + dy < cy && mayCanvasCanMove < 0; tryMoveCanvasY = _y + dy < cy && mayCanvasCanMove < 0;
if (tryMoveCanvasY) { if (tryMoveCanvasY) {
dy = max(dy, mayCanvasCanMove); dy = max(dy, mayCanvasCanMove);