diff options
author | Junyoung Cho <june0.cho@samsung.com> | 2014-02-21 16:16:06 +0900 |
---|---|---|
committer | Junyoung Cho <june0.cho@samsung.com> | 2014-02-21 17:30:15 +0900 |
commit | 327e1e20a91fe1849ab84a2f0e710e3d4d94aba4 (patch) | |
tree | 6a04beacec2993027336715bbf309f2b201ce465 | |
parent | 65191b0d6316fa5ee0fcc9ad301a77e6b6f51b20 (diff) | |
download | servo-327e1e20a91fe1849ab84a2f0e710e3d4d94aba4.tar.gz servo-327e1e20a91fe1849ab84a2f0e710e3d4d94aba4.zip |
Prevent ' ' from stripping as whitespace
-rw-r--r-- | src/components/main/layout/box_.rs | 3 | ||||
-rw-r--r-- | src/components/main/layout/construct.rs | 6 | ||||
-rw-r--r-- | src/components/util/str.rs | 3 |
3 files changed, 7 insertions, 5 deletions
diff --git a/src/components/main/layout/box_.rs b/src/components/main/layout/box_.rs index d4f16e1e37a..3350e3050f8 100644 --- a/src/components/main/layout/box_.rs +++ b/src/components/main/layout/box_.rs @@ -22,6 +22,7 @@ use servo_util::geometry::Au; use servo_util::geometry; use servo_util::range::*; use servo_util::namespace; +use servo_util::str::is_whitespace_not_nbsp; use std::cast; use std::cell::RefCell; @@ -1428,7 +1429,7 @@ impl Box { /// Returns true if this box is an unscanned text box that consists entirely of whitespace. pub fn is_whitespace_only(&self) -> bool { match self.specific { - UnscannedTextBox(ref text_box_info) => text_box_info.text.is_whitespace(), + UnscannedTextBox(ref text_box_info) => is_whitespace_not_nbsp(text_box_info.text), _ => false, } } diff --git a/src/components/main/layout/construct.rs b/src/components/main/layout/construct.rs index 98d33db8d26..4a2dc5a055d 100644 --- a/src/components/main/layout/construct.rs +++ b/src/components/main/layout/construct.rs @@ -43,6 +43,7 @@ use style::ComputedValues; use servo_util::namespace; use servo_util::url::parse_url; use servo_util::url::is_image_data; +use servo_util::str::is_whitespace_not_nbsp; use extra::url::Url; use extra::arc::Arc; @@ -724,10 +725,7 @@ impl<'ln> NodeUtils for ThreadSafeLayoutNode<'ln> { match self.type_id() { TextNodeTypeId => { unsafe { - if !self.with_text(|text| text.characterdata - .data - .chars() - .all(|c| c.is_whitespace())) { + if !self.with_text(|text| is_whitespace_not_nbsp(text.characterdata.data)) { return false } diff --git a/src/components/util/str.rs b/src/components/util/str.rs index 13272d8ec42..0b9bd74f074 100644 --- a/src/components/util/str.rs +++ b/src/components/util/str.rs @@ -19,3 +19,6 @@ pub fn null_str_as_empty_ref<'a>(s: &'a Option<DOMString>) -> &'a str { } } +pub fn is_whitespace_not_nbsp(s: &str) -> bool { + s.chars().all(|c| c.is_whitespace() && c != '\xa0') +} |