mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Auto merge of #11781 - sjmelia:8719_support_for_css_active, r=Manishearth
Issue 8719: Add basic support for :active selector <!-- Please describe your changes on the following line: --> Added toggling of active state for element and parents on mousedown/mouseup. Active state is removed when mouseout. (hover) - As with my other PR i'm struggling a bit with the automated testing. I've added a manual test case and found quirks-mode/active-and-hover-manual.html which - aside from also being a manual test, is functional in Firefox but does not render correctly in Servo. - Not implemented: In Firefox, behaviour differs with a <!DOCTYPE HTML> and an anchor does not lose it's activation on mouseout; whereas a button does. --- <!-- 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 - [X] These changes fix #8719 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11781) <!-- Reviewable:end -->
This commit is contained in:
commit
5afdf7fb5c
5 changed files with 63 additions and 2 deletions
|
@ -735,9 +735,22 @@ impl Document {
|
|||
// https://w3c.github.io/uievents/#trusted-events
|
||||
event.set_trusted(true);
|
||||
// https://html.spec.whatwg.org/multipage/#run-authentic-click-activation-steps
|
||||
let activatable = el.as_maybe_activatable();
|
||||
match mouse_event_type {
|
||||
MouseEventType::Click => el.authentic_click_activation(event),
|
||||
_ => {
|
||||
MouseEventType::MouseDown => {
|
||||
if let Some(a) = activatable {
|
||||
a.enter_formal_activation_state();
|
||||
}
|
||||
|
||||
let target = node.upcast();
|
||||
event.fire(target);
|
||||
},
|
||||
MouseEventType::MouseUp => {
|
||||
if let Some(a) = activatable {
|
||||
a.exit_formal_activation_state();
|
||||
}
|
||||
|
||||
let target = node.upcast();
|
||||
event.fire(target);
|
||||
},
|
||||
|
@ -904,6 +917,7 @@ impl Document {
|
|||
.inclusive_ancestors()
|
||||
.filter_map(Root::downcast::<Element>) {
|
||||
element.set_hover_state(false);
|
||||
element.set_active_state(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue