mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Add a utility function to convert PseudoElement to nsIAtom*.
MozReview-Commit-ID: 14qYFpiW0iG
This commit is contained in:
parent
d8f08b80e0
commit
22de4dc7a6
2 changed files with 10 additions and 3 deletions
|
@ -7,11 +7,13 @@
|
||||||
use cssparser::ToCss;
|
use cssparser::ToCss;
|
||||||
use element_state::ElementState;
|
use element_state::ElementState;
|
||||||
use gecko_bindings::structs::CSSPseudoClassType;
|
use gecko_bindings::structs::CSSPseudoClassType;
|
||||||
|
use gecko_bindings::structs::nsIAtom;
|
||||||
use selector_parser::{SelectorParser, PseudoElementCascadeType};
|
use selector_parser::{SelectorParser, PseudoElementCascadeType};
|
||||||
use selector_parser::{attr_equals_selector_is_shareable, attr_exists_selector_is_shareable};
|
use selector_parser::{attr_equals_selector_is_shareable, attr_exists_selector_is_shareable};
|
||||||
use selectors::parser::AttrSelector;
|
use selectors::parser::AttrSelector;
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
use std::ptr;
|
||||||
use string_cache::{Atom, Namespace, WeakAtom, WeakNamespace};
|
use string_cache::{Atom, Namespace, WeakAtom, WeakNamespace};
|
||||||
|
|
||||||
/// A representation of a CSS pseudo-element.
|
/// A representation of a CSS pseudo-element.
|
||||||
|
@ -111,6 +113,12 @@ impl PseudoElement {
|
||||||
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns null or nsIAtom pointer corresponding to a given PseudoElement.
|
||||||
|
#[inline]
|
||||||
|
pub fn ns_atom_or_null_from_opt(pseudo: Option<&PseudoElement>) -> *mut nsIAtom {
|
||||||
|
pseudo.map(|p| p.as_atom().as_ptr()).unwrap_or(ptr::null_mut())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ToCss for PseudoElement {
|
impl ToCss for PseudoElement {
|
||||||
|
|
|
@ -416,7 +416,7 @@ impl<'le> TElement for GeckoElement<'le> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_animation_rules(&self, pseudo: Option<&PseudoElement>) -> AnimationRules {
|
fn get_animation_rules(&self, pseudo: Option<&PseudoElement>) -> AnimationRules {
|
||||||
let atom_ptr = pseudo.map(|p| p.as_atom().as_ptr()).unwrap_or(ptr::null_mut());
|
let atom_ptr = PseudoElement::ns_atom_or_null_from_opt(pseudo);
|
||||||
unsafe {
|
unsafe {
|
||||||
AnimationRules(
|
AnimationRules(
|
||||||
Gecko_GetAnimationRule(self.0, atom_ptr, CascadeLevel::Animations).into_arc_opt(),
|
Gecko_GetAnimationRule(self.0, atom_ptr, CascadeLevel::Animations).into_arc_opt(),
|
||||||
|
@ -454,9 +454,8 @@ impl<'le> TElement for GeckoElement<'le> {
|
||||||
_existing_values: &'a Arc<ComputedValues>,
|
_existing_values: &'a Arc<ComputedValues>,
|
||||||
pseudo: Option<&PseudoElement>)
|
pseudo: Option<&PseudoElement>)
|
||||||
-> Option<&'a nsStyleContext> {
|
-> Option<&'a nsStyleContext> {
|
||||||
|
let atom_ptr = PseudoElement::ns_atom_or_null_from_opt(pseudo);
|
||||||
unsafe {
|
unsafe {
|
||||||
let atom_ptr = pseudo.map(|p| p.as_atom().as_ptr())
|
|
||||||
.unwrap_or(ptr::null_mut());
|
|
||||||
let context_ptr = Gecko_GetStyleContext(self.as_node().0, atom_ptr);
|
let context_ptr = Gecko_GetStyleContext(self.as_node().0, atom_ptr);
|
||||||
context_ptr.as_ref()
|
context_ptr.as_ref()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue