diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-08-24 04:23:13 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-08-24 04:23:13 -0600 |
commit | fa06a96f8a880a051ad4cad2489042547dd7f455 (patch) | |
tree | 9e7f7501b79325691e601d4da915d7dffcff5978 /components/script/dom/node.rs | |
parent | 1600303231939a18a4962ebb9a22587085b29214 (diff) | |
parent | daedee844f9adc535b89aeef22286933c8fab00e (diff) | |
download | servo-fa06a96f8a880a051ad4cad2489042547dd7f455.tar.gz servo-fa06a96f8a880a051ad4cad2489042547dd7f455.zip |
Auto merge of #7334 - servo:active, r=SimonSapin
Parse :active pseudo-class selector.
This is #7258 with a spec link added in doc-comment.
The pseudo-class is never matched, but this can still help with stylesheets like `a:hover, a:active { color: something }` where failing to parse one pseudo-class makes the entire selector list invalid.
I filed #7333 about actually making it match.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7334)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 5b482c817b9..12c671b70a8 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -170,6 +170,10 @@ bitflags! { #[doc = "Specifies whether this node is focusable and whether it is supposed \ to be reachable with using sequential focus navigation."] const SEQUENTIALLY_FOCUSABLE = 0x400, + #[doc = "Specifies whether this node is [being activated]\ + (https://html.spec.whatwg.org/multipage/#selector-active). \ + FIXME(#7333): set/unset this when appropriate"] + const IN_ACTIVE_STATE = 0x800, } } @@ -458,6 +462,9 @@ pub trait NodeHelpers { fn get_focus_state(self) -> bool; fn set_focus_state(self, state: bool); + fn get_active_state(self) -> bool; + fn set_active_state(self, state: bool); + fn get_disabled_state(self) -> bool; fn set_disabled_state(self, state: bool); @@ -635,6 +642,15 @@ impl<'a> NodeHelpers for &'a Node { self.dirty(NodeDamage::NodeStyleDamaged); } + fn get_active_state(self) -> bool { + self.get_flag(IN_ACTIVE_STATE) + } + + fn set_active_state(self, state: bool) { + self.set_flag(IN_ACTIVE_STATE, state); + self.dirty(NodeDamage::NodeStyleDamaged); + } + fn get_disabled_state(self) -> bool { self.get_flag(IN_DISABLED_STATE) } @@ -1115,6 +1131,7 @@ pub trait LayoutNodeHelpers { fn get_hover_state_for_layout(&self) -> bool; fn get_focus_state_for_layout(&self) -> bool; + fn get_active_state_for_layout(&self) -> bool; fn get_disabled_state_for_layout(&self) -> bool; fn get_enabled_state_for_layout(&self) -> bool; } @@ -1229,6 +1246,13 @@ impl LayoutNodeHelpers for LayoutJS<Node> { } #[inline] #[allow(unsafe_code)] + fn get_active_state_for_layout(&self) -> bool { + unsafe { + self.get_flag(IN_ACTIVE_STATE) + } + } + #[inline] + #[allow(unsafe_code)] fn get_disabled_state_for_layout(&self) -> bool { unsafe { self.get_flag(IN_DISABLED_STATE) |