Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upProperly dispatch keypress event #14738
Merged
Conversation
highfive
commented
Dec 26, 2016
|
Heads up! This PR modifies the following files:
|
highfive
commented
Dec 26, 2016
95a2d9a
to
e039bea
components/script/dom/event.rs
Outdated
| @@ -77,14 +77,21 @@ impl From<bool> for EventCancelable { | |||
| } | |||
| } | |||
|
|
|||
| #[derive(JSTraceable, HeapSizeOf, Copy, Clone, PartialEq)] | |||
| pub enum EventDefault { | |||
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Do we need tests for this? |
|
I don't think we can write automated tests for this yet, because we can't synthesize key input. |
|
@bors-servo: r+ |
|
|
|
Oh please... I haven't actually fixed the issue yet. I'll get back into it once again this weekend |
|
|
bors-servo
added a commit
that referenced
this pull request
Jan 4, 2017
Properly dispatch keypress event <!-- Please describe your changes on the following line: --> This was an attempt to fix #14659. It turned out that the problem wasn't what I thought it was. So, I didn't fix that. On the brighter side, this fixes two related issues. - Previously, we were unable to launch `keypress` events from `input` and `textarea` elements, because [we'd been cancelling](https://github.com/servo/servo/blob/1327ebd52f53f5f6637a12fab6cf0cad0aa0be6f/components/script/dom/htmlinputelement.rs#L1120-L1124) the key events, so that they don't trigger window navigation - #8400). I've introduced an enum to represent an additional state to an event's cancellation. - [According to the spec](https://w3c.github.io/uievents/#keypress-event-order), `keypress` (if available) should be dispatched immediately after `keydown`, and it should be followed by `input`. Canceling `keypress` should also cancel `input`. But, we'd been dispatching `input` before `keypress`. We now dispatch `input` once the `keypress` event is on the respective elements. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors <!-- Either: --> - [x] These changes do not require tests because it's a refactor? <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> r? @jdm or anyone interested <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14738) <!-- Reviewable:end -->
|
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
wafflespeanut commentedDec 26, 2016
•
edited
This was an attempt to fix #14659. It turned out that the problem wasn't what I thought it was. So, I didn't fix that. On the brighter side, this fixes two related issues.
keypressevents frominputandtextareaelements, because we'd been cancelling the key events, so that they don't trigger window navigation - #8400). I've introduced an enum to represent an additional state to an event's cancellation.keypress(if available) should be dispatched immediately afterkeydown, and it should be followed byinput. Cancelingkeypressshould also cancelinput. But, we'd been dispatchinginputbeforekeypress. We now dispatchinputonce thekeypressevent is on the respective elements../mach build -ddoes not report any errors./mach test-tidydoes not report any errorsr? @jdm or anyone interested
This change is