* fix: guard debounced desktop selection update
Avoid dereferencing a cleared selection from the delayed
macOS metrics callback and add a regression test that
covers the stale-timer path.
* chore: clean up analyzer warnings
Remove redundant default arguments in tests and apply the
missing trailing comma required by the current lint rules.
* fix: long press auto-scroll speed on mobile
When long pressing and dragging on mobile, auto-scroll was too fast
because cursor drag mode used Duration.zero (instant) instead of
animated scrolling, and the proxy rect was a large centered square
triggering in both directions.
- Add AxisDirection.down handling in auto_scroller for directional
proxy rects extending downward from cursor position
- Add cursor drag mode case in scroll_service_widget with direction
detection based on cursor movement relative to last selection
- Include cursor mode in isDragOperation for animated scroll duration
- Pass dragMode in Android long press selectionExtraInfo so scroll
service can detect cursor drag on Android
* fix: correct auto-scroller test for downward scroll rect
* fix: correct auto-scroll direction for left selection handle drag on iOS
When dragging the left selection handle upward, the proxy rect used for
auto-scroll detection was built with offset & Size(1, edgeOffset), which
extends 220px downward from the selection start. This caused the bottom
of the rect to exceed the viewport bottom, triggering a downward scroll
(showing content below) — the opposite of the intended direction.
Fix by using Rect.fromLTWH(offset.dx, offset.dy - edgeOffset, 1, edgeOffset)
so the proxy rect extends upward, only triggering scroll-up when the
handle approaches the top edge of the viewport.
* chore: update iOS minimum deployment target to 13.0
* test: add auto_scroller proxy rect direction tests
Adds regression tests for the left selection handle auto-scroll bug
where the proxy rect incorrectly extended downward, triggering scroll
in the wrong direction. Verifies the rect extends upward from the
handle offset when direction is AxisDirection.up.
* fix: remove unused import in auto_scroller_test
* chore: code review
* chore: update Flutter SDK to version 3.38.5
Upgrade Flutter from 3.32.4 to 3.38.5 to meet awesome_lints
requirement for Dart SDK 3.10.0+. Update CI workflow to use
the new Flutter version and add custom_lint verification step.
* chore: integrate awesome_lints with custom lint rules
Add awesome_lints and custom_lint dependencies, configure
analysis_options.yaml to enable newline lint rules: newline_before_case,
newline_before_constructor, newline_before_method, and newline_before_return.
* style: apply newline formatting per awesome_lints rules
Add blank lines before case clauses, return statements, method
declarations, and constructors throughout the codebase to comply
with awesome_lints newline rules.
* fix: replace deprecated translate with leftTranslateByDouble
Update Matrix4.translate() calls to use the new leftTranslateByDouble()
API to resolve deprecation warnings in Flutter SDK 3.38.5.
* chore: improve code readability with blank line formatting