From edd713ac5fbb7ca5b3f987ba3e8852764af2f60a Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Mon, 16 Dec 2024 11:23:10 +0000 Subject: [PATCH] LibWebView: Add an option to disable painting viewport scrollbars --- Libraries/LibWebView/Application.cpp | 3 +++ Libraries/LibWebView/HelperProcess.cpp | 2 ++ Libraries/LibWebView/Options.h | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/Libraries/LibWebView/Application.cpp b/Libraries/LibWebView/Application.cpp index 9afd8b06f8d2..8558900d434f 100644 --- a/Libraries/LibWebView/Application.cpp +++ b/Libraries/LibWebView/Application.cpp @@ -83,6 +83,7 @@ void Application::initialize(Main::Arguments const& arguments, URL::URL new_tab_ bool force_cpu_painting = false; bool force_fontconfig = false; bool collect_garbage_on_every_allocation = false; + bool disable_scrollbar_painting = false; Core::ArgsParser args_parser; args_parser.set_general_help("The Ladybird web browser :^)"); @@ -104,6 +105,7 @@ void Application::initialize(Main::Arguments const& arguments, URL::URL new_tab_ args_parser.add_option(force_cpu_painting, "Force CPU painting", "force-cpu-painting"); args_parser.add_option(force_fontconfig, "Force using fontconfig for font loading", "force-fontconfig"); args_parser.add_option(collect_garbage_on_every_allocation, "Collect garbage after every JS heap allocation", "collect-garbage-on-every-allocation", 'g'); + args_parser.add_option(disable_scrollbar_painting, "Don't paint horizontal or vertical scrollbars on the main viewport", "disable-scrollbar-painting"); args_parser.add_option(dns_server_address, "Set the DNS server address", "dns-server", 0, "host|address"); args_parser.add_option(dns_server_port, "Set the DNS server port", "dns-port", 0, "port (default: 53 or 853 if --dot)"); args_parser.add_option(use_dns_over_tls, "Use DNS over TLS", "dot"); @@ -171,6 +173,7 @@ void Application::initialize(Main::Arguments const& arguments, URL::URL new_tab_ .force_fontconfig = force_fontconfig ? ForceFontconfig::Yes : ForceFontconfig::No, .enable_autoplay = enable_autoplay ? EnableAutoplay::Yes : EnableAutoplay::No, .collect_garbage_on_every_allocation = collect_garbage_on_every_allocation ? CollectGarbageOnEveryAllocation::Yes : CollectGarbageOnEveryAllocation::No, + .paint_viewport_scrollbars = disable_scrollbar_painting ? PaintViewportScrollbars::No : PaintViewportScrollbars::Yes, }; create_platform_options(m_chrome_options, m_web_content_options); diff --git a/Libraries/LibWebView/HelperProcess.cpp b/Libraries/LibWebView/HelperProcess.cpp index a22cabba5018..311fa1fa7b88 100644 --- a/Libraries/LibWebView/HelperProcess.cpp +++ b/Libraries/LibWebView/HelperProcess.cpp @@ -110,6 +110,8 @@ ErrorOr> launch_web_content_process( arguments.append("--collect-garbage-on-every-allocation"sv); if (web_content_options.is_headless == WebView::IsHeadless::Yes) arguments.append("--headless"sv); + if (web_content_options.paint_viewport_scrollbars == PaintViewportScrollbars::No) + arguments.append("--disable-scrollbar-painting"sv); if (auto const maybe_echo_server_port = web_content_options.echo_server_port; maybe_echo_server_port.has_value()) { arguments.append("--echo-server-port"sv); diff --git a/Libraries/LibWebView/Options.h b/Libraries/LibWebView/Options.h index bea15cd8ba8c..5c0de4f2760f 100644 --- a/Libraries/LibWebView/Options.h +++ b/Libraries/LibWebView/Options.h @@ -118,6 +118,11 @@ enum class IsHeadless { Yes, }; +enum class PaintViewportScrollbars { + Yes, + No, +}; + struct WebContentOptions { String command_line; String executable_path; @@ -134,6 +139,7 @@ struct WebContentOptions { CollectGarbageOnEveryAllocation collect_garbage_on_every_allocation { CollectGarbageOnEveryAllocation::No }; Optional echo_server_port {}; IsHeadless is_headless { IsHeadless::No }; + PaintViewportScrollbars paint_viewport_scrollbars { PaintViewportScrollbars::Yes }; }; }