aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2015-04-28 14:26:03 +0200
committerMs2ger <ms2ger@gmail.com>2015-05-11 23:43:58 +0200
commit0c8e55bff1983e03979435ef7cb7053c18a031a3 (patch)
tree3919381940d50702a2e5586524c1dc3401240f15 /components
parent83f4b077eb37733bf2be22e315f0e0569b284c62 (diff)
downloadservo-0c8e55bff1983e03979435ef7cb7053c18a031a3.tar.gz
servo-0c8e55bff1983e03979435ef7cb7053c18a031a3.zip
Move input size to the new infrastructure.
Diffstat (limited to 'components')
-rw-r--r--components/script/dom/element.rs34
-rw-r--r--components/style/legacy.rs21
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 => {