-
Notifications
You must be signed in to change notification settings - Fork 3.8k
fix: fix pinch to zoom #6544
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
maribethb
merged 2 commits into
RaspberryPiFoundation:develop
from
maribethb:fix-pointer
Oct 14, 2022
Merged
fix: fix pinch to zoom #6544
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,95 @@ | ||
| /** | ||
| * @license | ||
| * Copyright 2022 Google LLC | ||
| * SPDX-License-Identifier: Apache-2.0 | ||
| */ | ||
|
|
||
| goog.declareModuleId('Blockly.test.touch'); | ||
|
|
||
| import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; | ||
|
|
||
| suite('Touch', function() { | ||
| setup(function() { | ||
| sharedTestSetup.call(this); | ||
| }); | ||
|
|
||
| teardown(function() { | ||
| Blockly.Touch.clearTouchIdentifier(); | ||
| sharedTestTeardown.call(this); | ||
| }); | ||
|
|
||
| suite('shouldHandleTouch', function() { | ||
| test('handles mousedown event', function() { | ||
| const mouseEvent = new MouseEvent('mousedown'); | ||
| chai.assert.isTrue(Blockly.Touch.shouldHandleEvent(mouseEvent)); | ||
| }); | ||
|
|
||
| test('handles multiple mousedown events', function() { | ||
| const mouseEvent1 = new MouseEvent('mousedown'); | ||
| const mouseEvent2 = new MouseEvent('mousedown'); | ||
| Blockly.Touch.shouldHandleEvent(mouseEvent1); | ||
| chai.assert.isTrue(Blockly.Touch.shouldHandleEvent(mouseEvent2)); | ||
| }); | ||
|
|
||
| test('does not handle mouseup if not tracking touch', function() { | ||
| const mouseEvent = new MouseEvent('mouseup'); | ||
| chai.assert.isFalse(Blockly.Touch.shouldHandleEvent(mouseEvent)); | ||
| }); | ||
|
|
||
| test('handles mouseup if already tracking a touch', function() { | ||
| const mousedown = new MouseEvent('mousedown'); | ||
| const mouseup = new MouseEvent('mouseup'); | ||
| // Register the mousedown event first | ||
| Blockly.Touch.shouldHandleEvent(mousedown); | ||
| chai.assert.isTrue(Blockly.Touch.shouldHandleEvent(mouseup)); | ||
| }); | ||
|
|
||
| test('handles pointerdown if this is a new touch', function() { | ||
| const pointerdown = new PointerEvent('pointerdown', {pointerId: 1, pointerType: 'touch'}); | ||
| chai.assert.isTrue(Blockly.Touch.shouldHandleEvent(pointerdown)); | ||
| }); | ||
|
|
||
| test('does not handle pointerdown if part of a different touch', function() { | ||
| const pointerdown1 = new PointerEvent('pointerdown', {pointerId: 1, pointerType: 'touch'}); | ||
| const pointerdown2 = new PointerEvent('pointerdown', {pointerId: 2, pointerType: 'touch'}); | ||
| Blockly.Touch.shouldHandleEvent(pointerdown1); | ||
| chai.assert.isFalse(Blockly.Touch.shouldHandleEvent(pointerdown2)); | ||
| }); | ||
|
|
||
| test('does not handle pointerdown after a mousedown', function() { | ||
| const mouseEvent = new MouseEvent('mousedown'); | ||
| const pointerdown = new PointerEvent('pointerdown', {pointerId: 1, pointerType: 'touch'}); | ||
| Blockly.Touch.shouldHandleEvent(mouseEvent); | ||
| chai.assert.isFalse(Blockly.Touch.shouldHandleEvent(pointerdown)); | ||
| }); | ||
|
|
||
| test('does not handle pointerup if not tracking touch', function() { | ||
| const pointerup = new PointerEvent('pointerup', {pointerId: 1, pointerType: 'touch'}); | ||
| chai.assert.isFalse(Blockly.Touch.shouldHandleEvent(pointerup)); | ||
| }); | ||
|
|
||
| test('handles pointerup if part of existing touch', function() { | ||
| const pointerdown = new PointerEvent('pointerdown', {pointerId: 1, pointerType: 'touch'}); | ||
| const pointerup = new PointerEvent('pointerdown', {pointerId: 1, pointerType: 'touch'}); | ||
| Blockly.Touch.shouldHandleEvent(pointerdown); | ||
| chai.assert.isTrue(Blockly.Touch.shouldHandleEvent(pointerup)); | ||
| }); | ||
| }); | ||
|
|
||
| suite('getTouchIdentifierFromEvent', function() { | ||
| test('is mouse for MouseEvents', function() { | ||
| const mousedown = new MouseEvent('mousedown'); | ||
| chai.assert.equal(Blockly.Touch.getTouchIdentifierFromEvent(mousedown), 'mouse'); | ||
| }); | ||
|
|
||
| test('is pointerId for mouse PointerEvents', function() { | ||
| const pointerdown = new PointerEvent('pointerdown', {pointerId: 7, pointerType: 'mouse'}); | ||
| chai.assert.equal(Blockly.Touch.getTouchIdentifierFromEvent(pointerdown), 7); | ||
| }); | ||
|
|
||
| test('is pointerId for touch PointerEvents', function() { | ||
| const pointerdown = new PointerEvent('pointerdown', {pointerId: 42, pointerType: 'touch'}); | ||
| chai.assert.equal(Blockly.Touch.getTouchIdentifierFromEvent(pointerdown), 42); | ||
| }); | ||
| }); | ||
| }); | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just curious: why do we want this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this test basically makes sure the behavior is the same as it was in blockly-v8.0.5. In that code (and now this code), if
e.pointerIdwas defined, we'd use that, no matter what. In PointerEvents, it should always be defined, so effectively, we always used that. That means for old old oldMouseEvents(that are notPointerEvents) we'd use the string'mouse'but we haven't actually used it for a long time.I wrote this test because originally I assumed that if the
PointerEventhad apointerTypethat wasmousethen we'd use the string'mouse'but that is not correct. We just always usepointerIdif it's available. So basically I wrote the test as a reminder of the current behavior.