1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:37:35 +00:00

LibWeb: Move white-space into LayoutStyle

This commit is contained in:
Andreas Kling 2020-06-24 16:37:44 +02:00
parent bc178ee743
commit 6b334e02e6
6 changed files with 45 additions and 5 deletions

View file

@ -225,6 +225,11 @@ void LayoutNodeWithStyle::apply_style(const StyleProperties& specified_style)
style.set_position(specified_style.position());
style.set_text_align(specified_style.text_align());
auto white_space = specified_style.white_space();
if (white_space.has_value())
style.set_white_space(white_space.value());
style.set_z_index(specified_style.z_index());
style.set_width(specified_style.length_or_fallback(CSS::PropertyID::Width, {}));
style.set_min_width(specified_style.length_or_fallback(CSS::PropertyID::MinWidth, {}));

View file

@ -31,11 +31,17 @@
namespace Web {
class InitialValues {
public:
static CSS::WhiteSpace white_space() { return CSS::WhiteSpace::Normal; }
};
class LayoutStyle {
public:
Optional<int> z_index() const { return m_z_index; }
CSS::TextAlign text_align() const { return m_text_align; }
CSS::Position position() const { return m_position; }
CSS::WhiteSpace white_space() const { return m_white_space; }
const Length& width() const { return m_width; }
const Length& min_width() const { return m_min_width; }
const Length& max_width() const { return m_max_width; }
@ -47,6 +53,7 @@ protected:
Optional<int> m_z_index;
CSS::TextAlign m_text_align;
CSS::Position m_position;
CSS::WhiteSpace m_white_space { InitialValues::white_space() };
Length m_width;
Length m_min_width;
Length m_max_width;
@ -63,6 +70,7 @@ public:
void set_z_index(Optional<int> value) { m_z_index = value; }
void set_text_align(CSS::TextAlign text_align) { m_text_align = text_align; }
void set_position(CSS::Position position) { m_position = position; }
void set_white_space(CSS::WhiteSpace value) { m_white_space = value; }
void set_width(const Length& width) { m_width = width; }
void set_min_width(const Length& width) { m_min_width = width; }
void set_max_width(const Length& width) { m_max_width = width; }

View file

@ -253,21 +253,20 @@ void LayoutText::split_into_lines(LayoutBlock& container, LayoutMode layout_mode
bool do_collapse = true;
bool do_wrap_lines = true;
bool do_wrap_breaks = false;
auto white_space_prop = specified_style().string_or_fallback(CSS::PropertyID::WhiteSpace, "normal");
if (white_space_prop == "nowrap") {
if (style().white_space() == CSS::WhiteSpace::Nowrap) {
do_collapse = true;
do_wrap_lines = false;
do_wrap_breaks = false;
} else if (white_space_prop == "pre") {
} else if (style().white_space() == CSS::WhiteSpace::Pre) {
do_collapse = false;
do_wrap_lines = false;
do_wrap_breaks = true;
} else if (white_space_prop == "pre-line") {
} else if (style().white_space() == CSS::WhiteSpace::PreLine) {
do_collapse = true;
do_wrap_lines = true;
do_wrap_breaks = true;
} else if (white_space_prop == "pre-wrap") {
} else if (style().white_space() == CSS::WhiteSpace::PreWrap) {
do_collapse = false;
do_wrap_lines = true;
do_wrap_breaks = true;