diff --git a/CHANGELOG.md b/CHANGELOG.md index 17e89b7edb..b0c1593cd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ ### 🐞 Bug fixes - Fix globe custom layers being supplied incorrect matrices after projection transition to mercator ([#5150](https://github.com/maplibre/maplibre-gl-js/pull/5150)) - Fix custom 3D models disappearing during projection transition ([#5150](https://github.com/maplibre/maplibre-gl-js/pull/5150)) +- Fix regression in NavigationControl compass on Firefox and Safari browsers ([#5205](https://github.com/maplibre/maplibre-gl-js/pull/5205)) - _...Add new stuff here..._ ## 5.0.0-pre.9 diff --git a/src/ui/handler/drag_move_state_manager.ts b/src/ui/handler/drag_move_state_manager.ts index 42e498c159..5ef48fb724 100644 --- a/src/ui/handler/drag_move_state_manager.ts +++ b/src/ui/handler/drag_move_state_manager.ts @@ -120,24 +120,38 @@ export class MouseOrTouchMoveStateManager implements DragMoveStateManager any, onTouchEvent: (TouchEvent) => any) { + if (e instanceof MouseEvent) return onMouseEvent(e); + if (typeof TouchEvent !== 'undefined' && e instanceof TouchEvent) return onTouchEvent(e); + } + startMove(e: MouseEvent | TouchEvent) { - if (e instanceof MouseEvent) this.mouseMoveStateManager.startMove(e); - if (e instanceof TouchEvent) this.oneFingerTouchMoveStateManager.startMove(e); + this._executeRelevantHandler(e, + e => this.mouseMoveStateManager.startMove(e), + e => this.oneFingerTouchMoveStateManager.startMove(e)); } + endMove(e?: MouseEvent | TouchEvent) { - if (e instanceof MouseEvent) this.mouseMoveStateManager.endMove(e); - if (e instanceof TouchEvent) this.oneFingerTouchMoveStateManager.endMove(e); + this._executeRelevantHandler(e, + e => this.mouseMoveStateManager.endMove(e), + e => this.oneFingerTouchMoveStateManager.endMove(e)); } + isValidStartEvent(e: MouseEvent | TouchEvent) { - if (e instanceof MouseEvent) return this.mouseMoveStateManager.isValidStartEvent(e); - if (e instanceof TouchEvent) return this.oneFingerTouchMoveStateManager.isValidStartEvent(e); + return this._executeRelevantHandler(e, + e => this.mouseMoveStateManager.isValidStartEvent(e), + e => this.oneFingerTouchMoveStateManager.isValidStartEvent(e)); } + isValidMoveEvent(e: MouseEvent | TouchEvent) { - if (e instanceof MouseEvent) return this.mouseMoveStateManager.isValidMoveEvent(e); - if (e instanceof TouchEvent) return this.oneFingerTouchMoveStateManager.isValidMoveEvent(e); + return this._executeRelevantHandler(e, + e => this.mouseMoveStateManager.isValidMoveEvent(e), + e => this.oneFingerTouchMoveStateManager.isValidMoveEvent(e)); } + isValidEndEvent(e?: MouseEvent | TouchEvent) { - if (e instanceof MouseEvent) return this.mouseMoveStateManager.isValidEndEvent(e); - if (e instanceof TouchEvent) return this.oneFingerTouchMoveStateManager.isValidEndEvent(e); + return this._executeRelevantHandler(e, + e => this.mouseMoveStateManager.isValidEndEvent(e), + e => this.oneFingerTouchMoveStateManager.isValidEndEvent(e)); } }