1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 06:14:58 +00:00

LibWebView: Add a standard "look like the OS" style sheet

It's quite common to want the web-view to match the native OS widgets,
so let's make that easy to do.
This commit is contained in:
Sam Atkins 2023-08-24 11:01:09 +01:00 committed by Sam Atkins
parent 84a5c67d6b
commit 7436f4fec2
4 changed files with 53 additions and 0 deletions

View file

@ -10,11 +10,20 @@ set(SOURCES
WebSocketClientAdapter.cpp
)
embed_as_string_view(
"NativeStyleSheetSource.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Native.css"
"NativeStyleSheetSource.cpp"
"native_stylesheet_source"
NAMESPACE "WebView"
)
set(GENERATED_SOURCES
../../Services/RequestServer/RequestClientEndpoint.h
../../Services/RequestServer/RequestServerEndpoint.h
../../Services/WebContent/WebContentClientEndpoint.h
../../Services/WebContent/WebContentServerEndpoint.h
NativeStyleSheetSource.cpp
)
serenity_lib(LibWebView webview)

View file

@ -0,0 +1,35 @@
/*
* Stylesheet designed to be used as the user stylesheet by apps that want their
* web content to look like the native GUI.
*/
html {
background-color: -libweb-palette-base;
color: -libweb-palette-base-text;
}
input, textarea {
border-color: -libweb-palette-threed-shadow1;
}
button, input[type=submit], input[type=button], input[type=reset] {
background-color: -libweb-palette-button;
border-color: -libweb-palette-threed-shadow1;
color: -libweb-palette-button-text;
}
button:hover, input[type=submit]:hover, input[type=button]:hover, input[type=reset]:hover {
background-color: -libweb-palette-hover-highlight;
}
:link {
color: -libweb-link;
}
:visited {
color: -libweb-palette-visited-link;
}
:link:active, :visited:active {
color: -libweb-palette-active-link;
}

View file

@ -436,4 +436,10 @@ void OutOfProcessWebView::set_user_style_sheet(String source)
client().async_set_user_style(source);
}
void OutOfProcessWebView::use_native_user_style_sheet()
{
extern StringView native_stylesheet_source;
set_user_style_sheet(MUST(String::from_utf8(native_stylesheet_source)));
}
}

View file

@ -55,6 +55,9 @@ public:
void set_content_scales_to_viewport(bool);
void set_user_style_sheet(String source);
// Load Native.css as the User style sheet, which attempts to make WebView content look as close to
// native GUI::Widgets as possible.
void use_native_user_style_sheet();
private:
OutOfProcessWebView();