diff options
author | Ms2ger <ms2ger@gmail.com> | 2015-04-28 14:26:03 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2015-05-11 23:43:58 +0200 |
commit | 0c8e55bff1983e03979435ef7cb7053c18a031a3 (patch) | |
tree | 3919381940d50702a2e5586524c1dc3401240f15 /components | |
parent | 83f4b077eb37733bf2be22e315f0e0569b284c62 (diff) | |
download | servo-0c8e55bff1983e03979435ef7cb7053c18a031a3.tar.gz servo-0c8e55bff1983e03979435ef7cb7053c18a031a3.zip |
Move input size to the new infrastructure.
Diffstat (limited to 'components')
-rw-r--r-- | components/script/dom/element.rs | 34 | ||||
-rw-r--r-- | components/style/legacy.rs | 21 |
2 files changed, 27 insertions, 28 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index c12abc32c96..4fbb432614c 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -280,6 +280,33 @@ impl RawLayoutElementHelpers for Element { 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] @@ -304,13 +331,6 @@ impl RawLayoutElementHelpers for Element { unsafe fn get_integer_attribute_for_layout(&self, integer_attribute: IntegerAttribute) -> Option<i32> { 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 => { if !self.is_htmltextareaelement() { panic!("I'm not a textarea element!") diff --git a/components/style/legacy.rs b/components/style/legacy.rs index 57343341e29..8c4ed130916 100644 --- a/components/style/legacy.rs +++ b/components/style/legacy.rs @@ -30,8 +30,6 @@ pub enum LengthAttribute { /// Legacy presentational attributes that take an integer as defined in HTML5 § 2.4.4.2. #[derive(Copy, Clone, PartialEq, Eq)] pub enum IntegerAttribute { - /// `<input size>` - Size, Cols, Rows, } @@ -122,25 +120,6 @@ impl PresentationalHintSynthesis for Stylist { matching_rules_list, 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") => { match element.get_integer_attribute(IntegerAttribute::Cols) { Some(value) if value != 0 => { |