mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Move input size to the new infrastructure.
This commit is contained in:
parent
83f4b077eb
commit
0c8e55bff1
2 changed files with 27 additions and 28 deletions
|
@ -280,6 +280,33 @@ impl RawLayoutElementHelpers for Element {
|
||||||
vertical: width_value,
|
vertical: width_value,
|
||||||
}))));
|
}))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let size = if self.is_htmlinputelement() {
|
||||||
|
// FIXME(pcwalton): More use of atoms, please!
|
||||||
|
// FIXME(Ms2ger): this is nonsense! Invalid values also end up as
|
||||||
|
// a text field
|
||||||
|
match self.get_attr_val_for_layout(&ns!(""), &atom!("type")) {
|
||||||
|
Some("text") | Some("password") => {
|
||||||
|
let this: &HTMLInputElement = mem::transmute(self);
|
||||||
|
match this.get_size_for_layout() {
|
||||||
|
0 => None,
|
||||||
|
s => Some(s as i32),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => None
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Some(size) = size {
|
||||||
|
let value = specified::Length::ServoCharacterWidth(
|
||||||
|
specified::CharacterWidth(size));
|
||||||
|
hints.push(from_declaration(
|
||||||
|
PropertyDeclaration::Width(SpecifiedValue(
|
||||||
|
specified::LengthOrPercentageOrAuto::Length(value)))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
|
@ -304,13 +331,6 @@ impl RawLayoutElementHelpers for Element {
|
||||||
unsafe fn get_integer_attribute_for_layout(&self, integer_attribute: IntegerAttribute)
|
unsafe fn get_integer_attribute_for_layout(&self, integer_attribute: IntegerAttribute)
|
||||||
-> Option<i32> {
|
-> Option<i32> {
|
||||||
match integer_attribute {
|
match integer_attribute {
|
||||||
IntegerAttribute::Size => {
|
|
||||||
if !self.is_htmlinputelement() {
|
|
||||||
panic!("I'm not a form input!")
|
|
||||||
}
|
|
||||||
let this: &HTMLInputElement = mem::transmute(self);
|
|
||||||
Some(this.get_size_for_layout() as i32)
|
|
||||||
}
|
|
||||||
IntegerAttribute::Cols => {
|
IntegerAttribute::Cols => {
|
||||||
if !self.is_htmltextareaelement() {
|
if !self.is_htmltextareaelement() {
|
||||||
panic!("I'm not a textarea element!")
|
panic!("I'm not a textarea element!")
|
||||||
|
|
|
@ -30,8 +30,6 @@ pub enum LengthAttribute {
|
||||||
/// Legacy presentational attributes that take an integer as defined in HTML5 § 2.4.4.2.
|
/// Legacy presentational attributes that take an integer as defined in HTML5 § 2.4.4.2.
|
||||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||||
pub enum IntegerAttribute {
|
pub enum IntegerAttribute {
|
||||||
/// `<input size>`
|
|
||||||
Size,
|
|
||||||
Cols,
|
Cols,
|
||||||
Rows,
|
Rows,
|
||||||
}
|
}
|
||||||
|
@ -122,25 +120,6 @@ impl PresentationalHintSynthesis for Stylist {
|
||||||
matching_rules_list,
|
matching_rules_list,
|
||||||
shareable);
|
shareable);
|
||||||
}
|
}
|
||||||
name if *name == atom!("input") => {
|
|
||||||
// FIXME(pcwalton): More use of atoms, please!
|
|
||||||
match element.get_attr(&ns!(""), &atom!("type")) {
|
|
||||||
Some("text") | Some("password") => {
|
|
||||||
match element.get_integer_attribute(IntegerAttribute::Size) {
|
|
||||||
Some(value) if value != 0 => {
|
|
||||||
let value = specified::Length::ServoCharacterWidth(
|
|
||||||
specified::CharacterWidth(value));
|
|
||||||
matching_rules_list.push(from_declaration(
|
|
||||||
PropertyDeclaration::Width(SpecifiedValue(
|
|
||||||
specified::LengthOrPercentageOrAuto::Length(value)))));
|
|
||||||
*shareable = false
|
|
||||||
}
|
|
||||||
Some(_) | None => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
name if *name == atom!("textarea") => {
|
name if *name == atom!("textarea") => {
|
||||||
match element.get_integer_attribute(IntegerAttribute::Cols) {
|
match element.get_integer_attribute(IntegerAttribute::Cols) {
|
||||||
Some(value) if value != 0 => {
|
Some(value) if value != 0 => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue