aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/construct.rs
diff options
context:
space:
mode:
authorMatthew Rasmus <mattr@zzntd.com>2014-11-29 13:48:55 -0800
committerMatthew Rasmus <mattr@zzntd.com>2014-12-05 12:21:31 -0800
commit29241699fdbdfe9308dde4f0586472919049f153 (patch)
treeb1eb7e834c86b659619e3b0158dbe5195162bd3e /components/layout/construct.rs
parentfd65b5f43826e526eb1dced4c93b0a63b8f49121 (diff)
downloadservo-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.rs15
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);