fix(flutter): recompute canvas geometry on margin changes

This commit is contained in:
Galygious 2026-03-16 06:46:29 -05:00
parent 43f70329cb
commit 5f2daf9d06
3 changed files with 11 additions and 5 deletions

View file

@ -13,6 +13,7 @@ import 'package:flutter_hbb/desktop/pages/desktop_home_page.dart';
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
import 'package:flutter_hbb/desktop/widgets/remote_toolbar.dart';
import 'package:flutter_hbb/mobile/widgets/dialog.dart';
import 'package:flutter_hbb/models/model.dart';
import 'package:flutter_hbb/models/platform_model.dart';
import 'package:flutter_hbb/models/printer_model.dart';
import 'package:flutter_hbb/models/server_model.dart';
@ -1812,9 +1813,9 @@ class _DisplayState extends State<_Display> {
}
Widget remoteCanvasMargin(BuildContext context) {
final canvasModel = Provider.of<CanvasModel>(context, listen: false);
onChanged(double value) async {
await bind.mainSetUserDefaultOption(
key: kOptionRemoteCanvasMargin, value: value.round().toString());
await canvasModel.setRemoteCanvasMargin(value);
setState(() {});
}

View file

@ -1148,9 +1148,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
onChangeRemoteCanvasMargin(double? value) async {
if (value == null || isRemoteCanvasMarginFixed) return;
await bind.mainSetUserDefaultOption(
key: kOptionRemoteCanvasMargin, value: value.round().toString());
await widget.ffi.canvasModel.updateViewStyle();
await widget.ffi.canvasModel.setRemoteCanvasMargin(value);
state.setState(() {});
}

View file

@ -2203,6 +2203,13 @@ class CanvasModel with ChangeNotifier {
return max(0, value);
}
Future<void> setRemoteCanvasMargin(double value) async {
final normalizedValue = max(0, value.round());
await bind.mainSetUserDefaultOption(
key: kOptionRemoteCanvasMargin, value: normalizedValue.toString());
await updateViewStyle();
}
Rect? get paddedRect {
final rect = realRect;
if (rect == null) {