mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
script: Update rust-selectors
to get :active
support.
I couldn't find the place in the spec where the precise behavior of `:active` is described, so I don't set it. However, all the machinery to keep track of its status is in place. Improves YouTube.
This commit is contained in:
parent
f4b526cfb4
commit
6567c269cf
6 changed files with 35 additions and 3 deletions
|
@ -478,6 +478,12 @@ impl<'le> ::selectors::Element for LayoutElement<'le> {
|
||||||
node.get_focus_state_for_layout()
|
node.get_focus_state_for_layout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn get_active_state(&self) -> bool {
|
||||||
|
let node = NodeCast::from_layout_js(&self.element);
|
||||||
|
node.get_active_state_for_layout()
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn get_id(&self) -> Option<Atom> {
|
fn get_id(&self) -> Option<Atom> {
|
||||||
unsafe {
|
unsafe {
|
||||||
|
|
|
@ -1754,6 +1754,10 @@ impl<'a> ::selectors::Element for Root<Element> {
|
||||||
let node = NodeCast::from_ref(&**self);
|
let node = NodeCast::from_ref(&**self);
|
||||||
node.get_hover_state()
|
node.get_hover_state()
|
||||||
}
|
}
|
||||||
|
fn get_active_state(&self) -> bool {
|
||||||
|
let node = NodeCast::from_ref(&**self);
|
||||||
|
node.get_active_state()
|
||||||
|
}
|
||||||
fn get_focus_state(&self) -> bool {
|
fn get_focus_state(&self) -> bool {
|
||||||
// TODO: Also check whether the top-level browsing context has the system focus,
|
// TODO: Also check whether the top-level browsing context has the system focus,
|
||||||
// and whether this element is a browsing context container.
|
// and whether this element is a browsing context container.
|
||||||
|
|
|
@ -170,6 +170,8 @@ bitflags! {
|
||||||
#[doc = "Specifies whether this node is focusable and whether it is supposed \
|
#[doc = "Specifies whether this node is focusable and whether it is supposed \
|
||||||
to be reachable with using sequential focus navigation."]
|
to be reachable with using sequential focus navigation."]
|
||||||
const SEQUENTIALLY_FOCUSABLE = 0x400,
|
const SEQUENTIALLY_FOCUSABLE = 0x400,
|
||||||
|
#[doc = "Specifies whether this node is active."]
|
||||||
|
const IN_ACTIVE_STATE = 0x800,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,6 +460,9 @@ pub trait NodeHelpers {
|
||||||
fn get_focus_state(self) -> bool;
|
fn get_focus_state(self) -> bool;
|
||||||
fn set_focus_state(self, state: 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 get_disabled_state(self) -> bool;
|
||||||
fn set_disabled_state(self, state: bool);
|
fn set_disabled_state(self, state: bool);
|
||||||
|
|
||||||
|
@ -635,6 +640,15 @@ impl<'a> NodeHelpers for &'a Node {
|
||||||
self.dirty(NodeDamage::NodeStyleDamaged);
|
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 {
|
fn get_disabled_state(self) -> bool {
|
||||||
self.get_flag(IN_DISABLED_STATE)
|
self.get_flag(IN_DISABLED_STATE)
|
||||||
}
|
}
|
||||||
|
@ -1115,6 +1129,7 @@ pub trait LayoutNodeHelpers {
|
||||||
|
|
||||||
fn get_hover_state_for_layout(&self) -> bool;
|
fn get_hover_state_for_layout(&self) -> bool;
|
||||||
fn get_focus_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_disabled_state_for_layout(&self) -> bool;
|
||||||
fn get_enabled_state_for_layout(&self) -> bool;
|
fn get_enabled_state_for_layout(&self) -> bool;
|
||||||
}
|
}
|
||||||
|
@ -1229,6 +1244,13 @@ impl LayoutNodeHelpers for LayoutJS<Node> {
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
#[allow(unsafe_code)]
|
#[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 {
|
fn get_disabled_state_for_layout(&self) -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
self.get_flag(IN_DISABLED_STATE)
|
self.get_flag(IN_DISABLED_STATE)
|
||||||
|
|
2
components/servo/Cargo.lock
generated
2
components/servo/Cargo.lock
generated
|
@ -1291,7 +1291,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "selectors"
|
name = "selectors"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/rust-selectors#e4d0af9115b82e47890a67a678aaa27aa270f083"
|
source = "git+https://github.com/servo/rust-selectors#572353b3209af040cd3e6261978b09c7f8122844"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cssparser 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cssparser 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
2
ports/cef/Cargo.lock
generated
2
ports/cef/Cargo.lock
generated
|
@ -1261,7 +1261,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "selectors"
|
name = "selectors"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/rust-selectors#e4d0af9115b82e47890a67a678aaa27aa270f083"
|
source = "git+https://github.com/servo/rust-selectors#572353b3209af040cd3e6261978b09c7f8122844"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cssparser 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cssparser 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
2
ports/gonk/Cargo.lock
generated
2
ports/gonk/Cargo.lock
generated
|
@ -1167,7 +1167,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "selectors"
|
name = "selectors"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/rust-selectors#e4d0af9115b82e47890a67a678aaa27aa270f083"
|
source = "git+https://github.com/servo/rust-selectors#572353b3209af040cd3e6261978b09c7f8122844"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cssparser 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cssparser 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue