mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Remove unneeded input type information from layout.
This commit is contained in:
parent
ca5d4633c2
commit
5794da904e
2 changed files with 13 additions and 29 deletions
|
@ -31,8 +31,8 @@ use fragment::{InlineBlockFragment, InlineBlockFragmentInfo, InputFragment};
|
||||||
use fragment::{Fragment, GenericFragment, IframeFragment, IframeFragmentInfo};
|
use fragment::{Fragment, GenericFragment, IframeFragment, IframeFragmentInfo};
|
||||||
use fragment::{ImageFragment, ImageFragmentInfo, SpecificFragmentInfo, TableFragment};
|
use fragment::{ImageFragment, ImageFragmentInfo, SpecificFragmentInfo, TableFragment};
|
||||||
use fragment::{TableCellFragment, TableColumnFragment, TableColumnFragmentInfo};
|
use fragment::{TableCellFragment, TableColumnFragment, TableColumnFragmentInfo};
|
||||||
use fragment::{TableRowFragment, TableWrapperFragment, UnscannedTextFragment, InputRadioButton};
|
use fragment::{TableRowFragment, TableWrapperFragment, UnscannedTextFragment};
|
||||||
use fragment::{UnscannedTextFragmentInfo, InputCheckbox, InputButton, InputText, InputFile};
|
use fragment::{UnscannedTextFragmentInfo, InputFragmentInfo};
|
||||||
use inline::{InlineFragments, InlineFlow};
|
use inline::{InlineFragments, InlineFlow};
|
||||||
use parallel;
|
use parallel;
|
||||||
use table_wrapper::TableWrapperFlow;
|
use table_wrapper::TableWrapperFlow;
|
||||||
|
@ -226,14 +226,14 @@ impl<'a> FlowConstructor<'a> {
|
||||||
// value? definitely for string comparisons.
|
// value? definitely for string comparisons.
|
||||||
let elem = node.as_element();
|
let elem = node.as_element();
|
||||||
let data = match elem.get_attr(&ns!(""), "type") {
|
let data = match elem.get_attr(&ns!(""), "type") {
|
||||||
Some("checkbox") => InputCheckbox,
|
Some("checkbox") | Some("radio") => None,
|
||||||
Some("button") | Some("submit") | Some("reset") =>
|
Some("button") | Some("submit") | Some("reset") =>
|
||||||
InputButton(node.get_input_value().len() as u32),
|
Some(node.get_input_value().len() as u32),
|
||||||
Some("radio") => InputRadioButton,
|
Some("file") => Some(node.get_input_size()),
|
||||||
Some("file") => InputFile(node.get_input_size()),
|
_ => Some(node.get_input_size()),
|
||||||
_ => InputText(node.get_input_size()),
|
|
||||||
};
|
};
|
||||||
InputFragment(data)
|
data.map(|size| InputFragment(InputFragmentInfo { size: size }))
|
||||||
|
.unwrap_or(GenericFragment)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Builds specific `Fragment` info for the given node.
|
/// Builds specific `Fragment` info for the given node.
|
||||||
|
|
|
@ -158,33 +158,17 @@ impl InlineBlockFragmentInfo {
|
||||||
|
|
||||||
/// A fragment that represents a displayable form element
|
/// A fragment that represents a displayable form element
|
||||||
#[deriving(Clone)]
|
#[deriving(Clone)]
|
||||||
pub enum InputFragmentInfo {
|
pub struct InputFragmentInfo {
|
||||||
InputButton(u32),
|
pub size: u32,
|
||||||
InputText(u32),
|
|
||||||
InputCheckbox,
|
|
||||||
InputRadioButton,
|
|
||||||
InputFile(u32),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl InputFragmentInfo {
|
impl InputFragmentInfo {
|
||||||
fn size(&self) -> Option<u32> {
|
|
||||||
match self {
|
|
||||||
&InputText(size) | &InputFile(size) | &InputButton(size) => Some(size),
|
|
||||||
_ => None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns the original inline-size of the input.
|
/// Returns the original inline-size of the input.
|
||||||
fn input_inline_size(&self, font_style: &FontStyle, layout_context: &LayoutContext) -> Au {
|
fn input_inline_size(&self, font_style: &FontStyle, layout_context: &LayoutContext) -> Au {
|
||||||
match self.size() {
|
let metrics = text::font_metrics_for_style(layout_context.font_context(), font_style);
|
||||||
Some(size) => {
|
|
||||||
let metrics = text::font_metrics_for_style(layout_context.font_context(), font_style);
|
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/#converting-a-character-width-to-pixels
|
// https://html.spec.whatwg.org/#converting-a-character-width-to-pixels
|
||||||
metrics.average_advance * (size as i32 - 1) + metrics.max_advance
|
metrics.average_advance * (self.size as i32 - 1) + metrics.max_advance
|
||||||
}
|
|
||||||
None => Au::from_px(10)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue