mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
auto merge of #4477 : thiagopnts/servo/descriptive-enum, r=jdm
refs #4472
This commit is contained in:
commit
c35a18e81f
2 changed files with 15 additions and 7 deletions
|
@ -9,7 +9,7 @@ use dom::bindings::global::GlobalRef;
|
||||||
use dom::bindings::js::{JS, JSRef, OptionalRootedRootable, Temporary};
|
use dom::bindings::js::{JS, JSRef, OptionalRootedRootable, Temporary};
|
||||||
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||||
use dom::document::DocumentHelpers;
|
use dom::document::DocumentHelpers;
|
||||||
use dom::element::{Element, ElementHelpers};
|
use dom::element::{Element, ElementHelpers, StylePriority};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{window_from_node, document_from_node, NodeDamage, Node};
|
use dom::node::{window_from_node, document_from_node, NodeDamage, Node};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
@ -222,7 +222,8 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
|
||||||
// Step 8
|
// Step 8
|
||||||
for decl in decl_block.normal.iter() {
|
for decl in decl_block.normal.iter() {
|
||||||
// Step 9
|
// Step 9
|
||||||
element.update_inline_style(decl.clone(), !priority.is_empty());
|
let style_priority = if priority.is_empty() { StylePriority::Normal } else { StylePriority::Important };
|
||||||
|
element.update_inline_style(decl.clone(), style_priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
let document = document_from_node(element).root();
|
let document = document_from_node(element).root();
|
||||||
|
@ -259,7 +260,8 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
|
||||||
// Step 5
|
// Step 5
|
||||||
for decl in decl_block.normal.iter() {
|
for decl in decl_block.normal.iter() {
|
||||||
// Step 6
|
// Step 6
|
||||||
element.update_inline_style(decl.clone(), !priority.is_empty());
|
let style_priority = if priority.is_empty() { StylePriority::Normal } else { StylePriority::Important };
|
||||||
|
element.update_inline_style(decl.clone(), style_priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
let document = document_from_node(element).root();
|
let document = document_from_node(element).root();
|
||||||
|
|
|
@ -456,6 +456,12 @@ impl LayoutElementHelpers for JS<Element> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[deriving(PartialEq)]
|
||||||
|
pub enum StylePriority {
|
||||||
|
Important,
|
||||||
|
Normal,
|
||||||
|
}
|
||||||
|
|
||||||
pub trait ElementHelpers<'a> {
|
pub trait ElementHelpers<'a> {
|
||||||
fn html_element_in_html_document(self) -> bool;
|
fn html_element_in_html_document(self) -> bool;
|
||||||
fn local_name(self) -> &'a Atom;
|
fn local_name(self) -> &'a Atom;
|
||||||
|
@ -467,7 +473,7 @@ pub trait ElementHelpers<'a> {
|
||||||
fn summarize(self) -> Vec<AttrInfo>;
|
fn summarize(self) -> Vec<AttrInfo>;
|
||||||
fn is_void(self) -> bool;
|
fn is_void(self) -> bool;
|
||||||
fn remove_inline_style_property(self, property: DOMString);
|
fn remove_inline_style_property(self, property: DOMString);
|
||||||
fn update_inline_style(self, property_decl: style::PropertyDeclaration, important: bool);
|
fn update_inline_style(self, property_decl: style::PropertyDeclaration, style_priority: StylePriority);
|
||||||
fn get_inline_style_declaration(self, property: &Atom) -> Option<style::PropertyDeclaration>;
|
fn get_inline_style_declaration(self, property: &Atom) -> Option<style::PropertyDeclaration>;
|
||||||
fn get_important_inline_style_declaration(self, property: &Atom) -> Option<style::PropertyDeclaration>;
|
fn get_important_inline_style_declaration(self, property: &Atom) -> Option<style::PropertyDeclaration>;
|
||||||
}
|
}
|
||||||
|
@ -555,10 +561,10 @@ impl<'a> ElementHelpers<'a> for JSRef<'a, Element> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_inline_style(self, property_decl: style::PropertyDeclaration, important: bool) {
|
fn update_inline_style(self, property_decl: style::PropertyDeclaration, style_priority: StylePriority) {
|
||||||
let mut inline_declarations = self.style_attribute().borrow_mut();
|
let mut inline_declarations = self.style_attribute().borrow_mut();
|
||||||
if let Some(ref mut declarations) = *inline_declarations.deref_mut() {
|
if let Some(ref mut declarations) = *inline_declarations.deref_mut() {
|
||||||
let existing_declarations = if important {
|
let existing_declarations = if style_priority == StylePriority::Important {
|
||||||
declarations.important.make_unique()
|
declarations.important.make_unique()
|
||||||
} else {
|
} else {
|
||||||
declarations.normal.make_unique()
|
declarations.normal.make_unique()
|
||||||
|
@ -574,7 +580,7 @@ impl<'a> ElementHelpers<'a> for JSRef<'a, Element> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let (important, normal) = if important {
|
let (important, normal) = if style_priority == StylePriority::Important {
|
||||||
(vec!(property_decl), vec!())
|
(vec!(property_decl), vec!())
|
||||||
} else {
|
} else {
|
||||||
(vec!(), vec!(property_decl))
|
(vec!(), vec!(property_decl))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue