diff --git a/Userland/Libraries/LibWebView/CMakeLists.txt b/Userland/Libraries/LibWebView/CMakeLists.txt index 63dec1c93c..fca24a498f 100644 --- a/Userland/Libraries/LibWebView/CMakeLists.txt +++ b/Userland/Libraries/LibWebView/CMakeLists.txt @@ -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) diff --git a/Userland/Libraries/LibWebView/Native.css b/Userland/Libraries/LibWebView/Native.css new file mode 100644 index 0000000000..87fbca6c15 --- /dev/null +++ b/Userland/Libraries/LibWebView/Native.css @@ -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; +} diff --git a/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp b/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp index 4b8a6088a3..4e65bd3850 100644 --- a/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp +++ b/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp @@ -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))); +} + } diff --git a/Userland/Libraries/LibWebView/OutOfProcessWebView.h b/Userland/Libraries/LibWebView/OutOfProcessWebView.h index 35711a8e56..a93d4fc298 100644 --- a/Userland/Libraries/LibWebView/OutOfProcessWebView.h +++ b/Userland/Libraries/LibWebView/OutOfProcessWebView.h @@ -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();