Skip to content

chore!: Kill PanDetector and the old event system - #4031

Merged
luanpotter merged 5 commits into
mainfrom
luan.dead-pan
Aug 30, 2026
Merged

chore!: Kill PanDetector and the old event system#4031
luanpotter merged 5 commits into
mainfrom
luan.dead-pan

Conversation

@luanpotter

Copy link
Copy Markdown
Member

Description

Kills PanDetector which was the last surviving heir of the game-level detectors. With it dead is all the infra:

  • the entire src/gestures/, including events.dart with BaseInfo, PositionInfo, EventPosition, EventDelta and all *Info classes (TapDownInfo and TapUpInfo were already dead but not cleansed);
  • GestureDetectorBuilder.initializeGestures, which existed only to wire the detectors onto recognizers, along with the ..initializeGestures(this) cascade on Game (this will allow some further simplifications on gesture builder binding);
  • The this is PanDetector early-return in FlameGame.containsEventHandlerAt (it was redundant, as componentsAtPoint yields the game itself last, so a FlameGame with a positional callbacks mixin is still reported as a hit anywhere within its bounds);
  • All the old export blocks in the events.dart and input.dart barrels.

Old PanDetector users should move to DragCallbacks (which as usual can be mixed into FlameGame directly). The examples and tutorials were migrated separately in #4028.

Also updates and restructure the entire events docs, with this last mercy kill:

  • gesture_input.md is deleted (it had become a second index page duplicating inputs.md, plus cross-cutting sections that I re-homed);
  • the event coordinate system and the Flutter gesture-API links move to inputs.md, the mouse cursor section to pointer_events.md, and panning-and-zooming folds into scale_events.md;
  • Fixed two broken links. collision_detection.md pointed at inputs/gesture_input.md#gesturehitboxes, but that section had moved to inputs.md in feat!: Kill MouseMovementDetector and rename PointerMove* to MouseMove* #4011 without its inbound links being updated;
  • The drag + scale combination was documented three times, with drag_events.md and scale_events.md carrying byte-identical code blocks. scale_events.md is now canonical and drag_events.md cross-links to it;
  • Dropped the stale "the old (legacy) approach is described in gesture_input.md" notes from tap_events.md and pointer_events.md. There is no longer an old approach;
  • Dropped the "For other input documents, see also:" blocks from keyboard_input.md and other_inputs.md. They date from docs: Major docs redo #2063, when inputs/ held exactly three documents that each linked the other two; the gesture third has since become five pages, none of which ever got the block. No other doc grouping in the tree links back to its index or lists siblings (navigation is the toctree);
  • Documented that localPosition / localDelta are only valid inside the callback, with clone() as the escape hatch if you need the value later.

The Breaking

PanDetector, DragDownInfo, DragStartInfo, DragUpdateInfo, DragEndInfo,
TapDownInfo, TapUpInfo, PositionInfo, GestureDetectorBuilder.initializeGestures killed; migration guide section is included.

Checklist

  • I have followed the Contributor Guide when preparing my PR.
  • I have updated/added tests for ALL new/updated/fixed functionality.
  • I have updated/added relevant documentation in docs and added dartdoc comments with ///.
  • I have updated/added relevant examples in examples or docs.

Breaking Change?

  • Yes, this PR is a breaking change.
  • No, this PR is not a breaking change.

@luanpotter
luanpotter requested a balanced review from Copilot August 30, 2026 18:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Removes the legacy PanDetector event system in favor of component-based callback APIs and consolidates input documentation.

Changes:

  • Removes legacy gesture classes, exports, initialization, and tests.
  • Adds PanDetector migration guidance.
  • Reorganizes input documentation and repairs links.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/flame/test/gestures/detectors_test.dart Removes obsolete detector tests.
packages/flame/test/game/game_widget/game_widget_drag_test.dart Removes legacy pan widget tests.
packages/flame/lib/src/gestures/events.dart Deletes legacy event wrappers.
packages/flame/lib/src/gestures/detectors.dart Deletes PanDetector.
packages/flame/lib/src/game/game.dart Removes legacy gesture initialization.
packages/flame/lib/src/game/game_widget/gesture_detector_builder.dart Removes detector wiring.
packages/flame/lib/src/game/flame_game.dart Removes the PanDetector hit-test special case.
packages/flame/lib/input.dart Removes the detector export.
packages/flame/lib/events.dart Removes legacy gesture exports.
doc/flame/migration.md Documents migration to DragCallbacks.
doc/flame/inputs/tap_events.md Removes legacy API notice.
doc/flame/inputs/scale_events.md Consolidates scale/drag and camera guidance.
doc/flame/inputs/pointer_events.md Moves mouse cursor guidance here.
doc/flame/inputs/other_inputs.md Removes redundant navigation.
doc/flame/inputs/keyboard_input.md Removes redundant navigation.
doc/flame/inputs/inputs.md Expands the input overview and coordinates guide.
doc/flame/inputs/gesture_input.md Deletes the obsolete duplicate page.
doc/flame/inputs/drag_events.md Links to canonical scale/drag guidance.
doc/flame/collision_detection.md Repairs GestureHitboxes links.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread doc/flame/inputs/scale_events.md Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@luanpotter
luanpotter marked this pull request as ready for review August 30, 2026 19:00
@luanpotter
luanpotter requested a review from spydon August 30, 2026 19:01
Comment thread doc/flame/migration.md Outdated
@luanpotter
luanpotter enabled auto-merge (squash) August 30, 2026 19:13
@luanpotter
luanpotter merged commit 4e9e50f into main Aug 30, 2026
8 checks passed
@luanpotter
luanpotter deleted the luan.dead-pan branch August 30, 2026 19:18
luanpotter added a commit that referenced this pull request Aug 30, 2026
Followup on
#4031 (comment),
this aligns all previous tables on `migration.md` with spaces for
(source) readability.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants