fix: Surface pen pressure, zoom glitches, sticky notes, selection UX
All checks were successful
CI / Windows build (push) Successful in 8m19s

Wire Win32 pressure into Dart, tighten pinch guards, use geometric shape
strokes, expand the ink palette, and replace scratch-link split view with
an on-page sticky that shares the sidecar repo.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-05 19:52:15 +08:00
parent 198da00ecd
commit 4a6fe7d05e
16 changed files with 621 additions and 171 deletions

View File

@@ -324,7 +324,15 @@ class _PenCanvasState extends State<PenCanvas> {
}
/// Raw [0,1] stylus force before response shaping (see [_normalizedPressure]).
///
/// Prefer native Win32 pressure from [PenInputService] when valid — Flutter's
/// PointerEvent.pressure on Windows is often flat/useless while the driver
/// still reports real 0..1024 via GetPointerPenInfo.
double? _rawNormalizedPressure(PointerEvent event) {
final hw = PenInputService.instance;
if (hw.isActive && hw.current.pressureValid) {
return hw.current.pressure.clamp(0.0, 1.0);
}
final range = event.pressureMax - event.pressureMin;
if (range > 0.0001) {
return ((event.pressure - event.pressureMin) / range).clamp(0.0, 1.0);
@@ -560,7 +568,7 @@ class _PenCanvasState extends State<PenCanvas> {
color: _currentColor().toARGB32(),
width: widget.strokeWidth,
kind: PenStrokeKind.pen,
brush: _currentBrush,
brush: kShapeBrush,
));
}
} else if (tool == CanvasTool.select) {
@@ -619,7 +627,7 @@ class _PenCanvasState extends State<PenCanvas> {
color: _currentColor().toARGB32(),
width: widget.strokeWidth,
kind: PenStrokeKind.pen,
brush: _currentBrush,
brush: kShapeBrush,
);
});
}