mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 06:18:14 +00:00
LibHTML: Parse link, alink and vlink in <body> and pass to Document
This patch adds HTMLBodyElement::parse_attribute() where we extract the link colors and stash them away on Document.
This commit is contained in:
parent
772718b8d8
commit
83a6474d82
4 changed files with 48 additions and 1 deletions
|
@ -99,7 +99,7 @@ Color Document::background_color() const
|
||||||
if (!background_color.has_value() || !background_color.value()->is_color())
|
if (!background_color.has_value() || !background_color.value()->is_color())
|
||||||
return Color::White;
|
return Color::White;
|
||||||
|
|
||||||
return background_color.value()->to_color();
|
return background_color.value()->to_color(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
URL Document::complete_url(const String& string) const
|
URL Document::complete_url(const String& string) const
|
||||||
|
@ -130,3 +130,18 @@ RefPtr<LayoutNode> Document::create_layout_node(const StyleResolver&, const Styl
|
||||||
{
|
{
|
||||||
return adopt(*new LayoutDocument(*this, StyleProperties::create()));
|
return adopt(*new LayoutDocument(*this, StyleProperties::create()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Document::set_link_color(Color color)
|
||||||
|
{
|
||||||
|
m_link_color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Document::set_active_link_color(Color color)
|
||||||
|
{
|
||||||
|
m_active_link_color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Document::set_visited_link_color(Color color)
|
||||||
|
{
|
||||||
|
m_visited_link_color = color;
|
||||||
|
}
|
||||||
|
|
|
@ -54,6 +54,15 @@ public:
|
||||||
|
|
||||||
Color background_color() const;
|
Color background_color() const;
|
||||||
|
|
||||||
|
Color link_color() const { return m_link_color; }
|
||||||
|
void set_link_color(Color);
|
||||||
|
|
||||||
|
Color active_link_color() const { return m_active_link_color; }
|
||||||
|
void set_active_link_color(Color);
|
||||||
|
|
||||||
|
Color visited_link_color() const { return m_visited_link_color; }
|
||||||
|
void set_visited_link_color(Color);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual RefPtr<LayoutNode> create_layout_node(const StyleResolver&, const StyleProperties* parent_properties) const override;
|
virtual RefPtr<LayoutNode> create_layout_node(const StyleResolver&, const StyleProperties* parent_properties) const override;
|
||||||
|
|
||||||
|
@ -62,4 +71,8 @@ private:
|
||||||
RefPtr<Node> m_hovered_node;
|
RefPtr<Node> m_hovered_node;
|
||||||
WeakPtr<Frame> m_frame;
|
WeakPtr<Frame> m_frame;
|
||||||
URL m_url;
|
URL m_url;
|
||||||
|
|
||||||
|
Color m_link_color { Color::Blue };
|
||||||
|
Color m_active_link_color { Color::Red };
|
||||||
|
Color m_visited_link_color { Color::Magenta };
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include <LibHTML/CSS/StyleProperties.h>
|
#include <LibHTML/CSS/StyleProperties.h>
|
||||||
#include <LibHTML/CSS/StyleValue.h>
|
#include <LibHTML/CSS/StyleValue.h>
|
||||||
|
#include <LibHTML/DOM/Document.h>
|
||||||
#include <LibHTML/DOM/HTMLBodyElement.h>
|
#include <LibHTML/DOM/HTMLBodyElement.h>
|
||||||
|
|
||||||
HTMLBodyElement::HTMLBodyElement(Document& document, const String& tag_name)
|
HTMLBodyElement::HTMLBodyElement(Document& document, const String& tag_name)
|
||||||
|
@ -25,3 +26,20 @@ void HTMLBodyElement::apply_presentational_hints(StyleProperties& style) const
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HTMLBodyElement::parse_attribute(const String& name, const String& value)
|
||||||
|
{
|
||||||
|
if (name == "link") {
|
||||||
|
auto color = Color::from_string(value);
|
||||||
|
if (color.has_value())
|
||||||
|
document().set_link_color(color.value());
|
||||||
|
} else if (name == "alink") {
|
||||||
|
auto color = Color::from_string(value);
|
||||||
|
if (color.has_value())
|
||||||
|
document().set_active_link_color(color.value());
|
||||||
|
} else if (name == "vlink") {
|
||||||
|
auto color = Color::from_string(value);
|
||||||
|
if (color.has_value())
|
||||||
|
document().set_visited_link_color(color.value());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -7,5 +7,6 @@ public:
|
||||||
HTMLBodyElement(Document&, const String& tag_name);
|
HTMLBodyElement(Document&, const String& tag_name);
|
||||||
virtual ~HTMLBodyElement() override;
|
virtual ~HTMLBodyElement() override;
|
||||||
|
|
||||||
|
virtual void parse_attribute(const String&, const String&) override;
|
||||||
virtual void apply_presentational_hints(StyleProperties&) const override;
|
virtual void apply_presentational_hints(StyleProperties&) const override;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue