From 1a9e78a7740f73d739f46f84d791322953c18738 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sun, 11 May 2025 09:05:37 -0400 Subject: [PATCH] LibWebView: Disable autocomplete when search is disabled Search suggestions don't make much sense when search itself is disabled. We now auto-disable autocomplete when search is disabled. --- Base/res/ladybird/about-pages/settings/search.js | 2 ++ Libraries/LibWebView/Settings.cpp | 8 +++++--- Libraries/LibWebView/WebUI/SettingsUI.cpp | 8 ++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Base/res/ladybird/about-pages/settings/search.js b/Base/res/ladybird/about-pages/settings/search.js index b342f8c11e5..3f34a47acb8 100644 --- a/Base/res/ladybird/about-pages/settings/search.js +++ b/Base/res/ladybird/about-pages/settings/search.js @@ -23,6 +23,8 @@ function loadEngineSettings(settings) { SEARCH_ENGINE = settings.searchEngine || {}; AUTOCOMPLETE_ENGINE = settings.autocompleteEngine || {}; + autocompleteEngine.disabled = !SEARCH_ENGINE.name; + loadCustomSearchEngines(); renderEngine(Engine.search, SEARCH_ENGINE); renderEngine(Engine.autocomplete, AUTOCOMPLETE_ENGINE); diff --git a/Libraries/LibWebView/Settings.cpp b/Libraries/LibWebView/Settings.cpp index 65fb8e3c0cf..9475389823c 100644 --- a/Libraries/LibWebView/Settings.cpp +++ b/Libraries/LibWebView/Settings.cpp @@ -108,9 +108,11 @@ Settings Settings::create(Badge) settings.m_search_engine = settings.find_search_engine_by_name(*search_engine_name); } - if (auto autocomplete_engine = settings_json.value().get_object(autocomplete_engine_key); autocomplete_engine.has_value()) { - if (auto autocomplete_engine_name = autocomplete_engine->get_string(autocomplete_engine_name_key); autocomplete_engine_name.has_value()) - settings.m_autocomplete_engine = find_autocomplete_engine_by_name(*autocomplete_engine_name); + if (settings.m_search_engine.has_value()) { + if (auto autocomplete_engine = settings_json.value().get_object(autocomplete_engine_key); autocomplete_engine.has_value()) { + if (auto autocomplete_engine_name = autocomplete_engine->get_string(autocomplete_engine_name_key); autocomplete_engine_name.has_value()) + settings.m_autocomplete_engine = find_autocomplete_engine_by_name(*autocomplete_engine_name); + } } auto load_site_setting = [&](SiteSetting& site_setting, StringView key) { diff --git a/Libraries/LibWebView/WebUI/SettingsUI.cpp b/Libraries/LibWebView/WebUI/SettingsUI.cpp index 19a05a21016..2963895e9c8 100644 --- a/Libraries/LibWebView/WebUI/SettingsUI.cpp +++ b/Libraries/LibWebView/WebUI/SettingsUI.cpp @@ -120,10 +120,14 @@ void SettingsUI::load_available_engines() void SettingsUI::set_search_engine(JsonValue const& search_engine) { - if (search_engine.is_null()) + if (search_engine.is_null()) { WebView::Application::settings().set_search_engine({}); - else if (search_engine.is_string()) + WebView::Application::settings().set_autocomplete_engine({}); + } else if (search_engine.is_string()) { WebView::Application::settings().set_search_engine(search_engine.as_string()); + } + + load_current_settings(); } void SettingsUI::add_custom_search_engine(JsonValue const& search_engine)