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:
parent
bc178ee743
commit
6b334e02e6
6 changed files with 45 additions and 5 deletions
|
@ -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, {}));
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue