diff options
author | Matthew Rasmus <mattr@zzntd.com> | 2014-11-29 13:48:55 -0800 |
---|---|---|
committer | Matthew Rasmus <mattr@zzntd.com> | 2014-12-05 12:21:31 -0800 |
commit | 29241699fdbdfe9308dde4f0586472919049f153 (patch) | |
tree | b1eb7e834c86b659619e3b0158dbe5195162bd3e /components/layout/construct.rs | |
parent | fd65b5f43826e526eb1dced4c93b0a63b8f49121 (diff) | |
download | servo-29241699fdbdfe9308dde4f0586472919049f153.tar.gz servo-29241699fdbdfe9308dde4f0586472919049f153.zip |
Implements multi line text input for TextArea
Diffstat (limited to 'components/layout/construct.rs')
-rw-r--r-- | components/layout/construct.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/components/layout/construct.rs b/components/layout/construct.rs index 95c2919b764..d4d52c2ebb4 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -49,6 +49,7 @@ use script::dom::element::{HTMLObjectElementTypeId, HTMLInputElementTypeId}; use script::dom::element::{HTMLTableColElementTypeId, HTMLTableDataCellElementTypeId}; use script::dom::element::{HTMLTableElementTypeId, HTMLTableHeaderCellElementTypeId}; use script::dom::element::{HTMLTableRowElementTypeId, HTMLTableSectionElementTypeId}; +use script::dom::element::HTMLTextAreaElementTypeId; use script::dom::node::{CommentNodeTypeId, DoctypeNodeTypeId, DocumentFragmentNodeTypeId}; use script::dom::node::{DocumentNodeTypeId, ElementNodeTypeId, ProcessingInstructionNodeTypeId}; use script::dom::node::{TextNodeTypeId}; @@ -273,7 +274,8 @@ impl<'a> FlowConstructor<'a> { TableColumnFragment(TableColumnFragmentInfo::new(node)) } Some(ElementNodeTypeId(HTMLTableDataCellElementTypeId)) | - Some(ElementNodeTypeId(HTMLTableHeaderCellElementTypeId)) => TableCellFragment, + Some(ElementNodeTypeId(HTMLTableHeaderCellElementTypeId)) | + Some(ElementNodeTypeId(HTMLTextAreaElementTypeId)) => TableCellFragment, Some(ElementNodeTypeId(HTMLTableRowElementTypeId)) | Some(ElementNodeTypeId(HTMLTableSectionElementTypeId)) => TableRowFragment, Some(TextNodeTypeId) => UnscannedTextFragment(UnscannedTextFragmentInfo::new(node)), @@ -487,7 +489,16 @@ impl<'a> FlowConstructor<'a> { // Special case: If this is generated content, then we need to initialize the accumulator // with the fragment corresponding to that content. if node.get_pseudo_element_type() != Normal || - node.type_id() == Some(ElementNodeTypeId(HTMLInputElementTypeId)) { + node.type_id() == Some(ElementNodeTypeId(HTMLInputElementTypeId)) || + node.type_id() == Some(ElementNodeTypeId(HTMLTextAreaElementTypeId)) { + // A TextArea's text contents are displayed through the input text + // box, so don't construct them. + // TODO Maybe this belongs somewhere else? + if node.type_id() == Some(ElementNodeTypeId(HTMLTextAreaElementTypeId)) { + for kid in node.children() { + kid.set_flow_construction_result(NoConstructionResult) + } + } let fragment_info = UnscannedTextFragment(UnscannedTextFragmentInfo::new(node)); let fragment = Fragment::new_from_specific_info(node, fragment_info); inline_fragment_accumulator.fragments.push_back(fragment); |