Skip to content

Commit de24093

Browse files
fix(core): use correct mjolnir requireFailure key for recognizers
The EventManager's RecognizerTupleNormalized expects `requireFailure`, but Deck was passing `requestFailure`. The key was silently dropped, so every requireFailure relationship declared in RECOGNIZERS (pinch waiting for multipan, single-finger pan waiting for multipan, click waiting for dblclick) never took effect. On mobile this caused pinch to fire on any 2-finger touch and beat the multipan recognizer to the gesture: a 2-finger vertical drag would land in pinch's `controllerState.zoom({pos, scale: ~1})` instead of `_onMultiPan → rotate({pos})`, so the camera re-anchored its longitude/latitude (looked like a pan) and picked up tiny bearing changes from inter-finger rotation deltas — and pitch never engaged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 48760d5 commit de24093

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

modules/core/src/lib/deck.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1318,14 +1318,20 @@ export default class Deck<ViewsT extends ViewOrViews = null> {
13181318
touchAction: this.props.touchAction,
13191319
recognizers: Object.keys(RECOGNIZERS).map((eventName: string) => {
13201320
// Resolve recognizer settings
1321-
const [RecognizerConstructor, defaultOptions, recognizeWith, requestFailure] =
1321+
const [RecognizerConstructor, defaultOptions, recognizeWith, requireFailure] =
13221322
RECOGNIZERS[eventName];
13231323
const optionsOverride = this.props.eventRecognizerOptions?.[eventName];
13241324
const options = {...defaultOptions, ...optionsOverride, event: eventName};
13251325
return {
13261326
recognizer: new RecognizerConstructor(options),
13271327
recognizeWith,
1328-
requestFailure
1328+
// Must match mjolnir's RecognizerTupleNormalized field name; the
1329+
// previous `requestFailure` was silently dropped by EventManager,
1330+
// disabling every requireFailure relationship declared in
1331+
// RECOGNIZERS (e.g. pinch waiting for multipan, click waiting for
1332+
// dblclick). On mobile this caused pinch to fire for any 2-finger
1333+
// touch and beat the multipan→pitch recognizer to the gesture.
1334+
requireFailure
13291335
};
13301336
}),
13311337
events: {

0 commit comments

Comments
 (0)