Skip to content

Commit 96fc476

Browse files
committed
LibWeb: Add a separate UA style sheet for documents in quirks mode
We need to make some additional tweaks to the default UA style when displaying documents in quirks mode.
1 parent 1cb8be9 commit 96fc476

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

Libraries/LibWeb/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ set(SOURCES
1616
CSS/Parser/CSSParser.cpp
1717
CSS/PropertyID.cpp
1818
CSS/PropertyID.h
19+
CSS/QuirksModeStyleSheetSource.cpp
1920
CSS/Selector.cpp
2021
CSS/SelectorEngine.cpp
2122
CSS/StyleDeclaration.cpp
@@ -329,5 +330,13 @@ add_custom_command(
329330
MAIN_DEPENDENCY CSS/Default.css
330331
)
331332

333+
add_custom_command(
334+
OUTPUT CSS/QuirksModeStyleSheetSource.cpp
335+
COMMAND ${write_if_different} CSS/QuirksModeStyleSheetSource.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Scripts/GenerateStyleSheetSource.sh quirks_mode_stylesheet_source ${CMAKE_CURRENT_SOURCE_DIR}/CSS/QuirksMode.css
336+
VERBATIM
337+
DEPENDS Scripts/GenerateStyleSheetSource.sh
338+
MAIN_DEPENDENCY CSS/Default.css
339+
)
340+
332341
serenity_lib(LibWeb web)
333342
target_link_libraries(LibWeb LibCore LibJS LibMarkdown LibGemini LibGUI LibGfx LibTextCodec LibProtocol LibImageDecoderClient)

Libraries/LibWeb/CSS/Default.css

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,3 @@ blockquote {
147147
margin-left: 25px;
148148
margin-right: 25px;
149149
}
150-
151-
/* FIXME: I think this should only apply in quirks mode. */
152-
table {
153-
text-align: left;
154-
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
table {
2+
text-align: left;
3+
}

Libraries/LibWeb/CSS/StyleResolver.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,23 @@ static StyleSheet& default_stylesheet()
5757
return *sheet;
5858
}
5959

60+
static StyleSheet& quirks_mode_stylesheet()
61+
{
62+
static StyleSheet* sheet;
63+
if (!sheet) {
64+
extern const char quirks_mode_stylesheet_source[];
65+
String css = quirks_mode_stylesheet_source;
66+
sheet = parse_css(CSS::ParsingContext(), css).leak_ref();
67+
}
68+
return *sheet;
69+
}
70+
6071
template<typename Callback>
6172
void StyleResolver::for_each_stylesheet(Callback callback) const
6273
{
6374
callback(default_stylesheet());
75+
if (document().in_quirks_mode())
76+
callback(quirks_mode_stylesheet());
6477
for (auto& sheet : document().style_sheets().sheets()) {
6578
callback(sheet);
6679
}

0 commit comments

Comments
 (0)