From 1aedb0ae5a9612fe4a9cf2032f4e9bf0b2a98bb0 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 4 Dec 2023 09:55:47 -0500 Subject: [PATCH] Ladybird/Qt: Replace the QString-from-AK helpers with a single method There's no need for 2 overloads for String and DeprecatedString, we can just use a StringView. This also avoids some cases of needlessly allocating a DeprecatedString from a StringView when calling this method. --- Ladybird/Qt/BrowserWindow.cpp | 14 +++++++------- Ladybird/Qt/LocationEdit.cpp | 2 +- Ladybird/Qt/Settings.cpp | 4 ++-- Ladybird/Qt/SettingsDialog.cpp | 4 ++-- Ladybird/Qt/StringUtils.cpp | 10 ++-------- Ladybird/Qt/StringUtils.h | 4 ++-- Ladybird/Qt/Tab.cpp | 6 +++--- Ladybird/Qt/WebContentView.cpp | 4 ++-- 8 files changed, 21 insertions(+), 27 deletions(-) diff --git a/Ladybird/Qt/BrowserWindow.cpp b/Ladybird/Qt/BrowserWindow.cpp index 7efedf91af..aeb2102c42 100644 --- a/Ladybird/Qt/BrowserWindow.cpp +++ b/Ladybird/Qt/BrowserWindow.cpp @@ -294,8 +294,8 @@ BrowserWindow::BrowserWindow(Vector const& initial_urls, WebView::CookieJar auto* user_agent_group = new QActionGroup(this); - auto add_user_agent = [this, &user_agent_group, &spoof_user_agent_menu](auto const& name, auto const& user_agent) { - auto* action = new QAction(qstring_from_ak_deprecated_string(name), this); + auto add_user_agent = [this, &user_agent_group, &spoof_user_agent_menu](auto name, auto const& user_agent) { + auto* action = new QAction(qstring_from_ak_string(name), this); action->setCheckable(true); user_agent_group->addAction(action); spoof_user_agent_menu->addAction(action); @@ -306,10 +306,10 @@ BrowserWindow::BrowserWindow(Vector const& initial_urls, WebView::CookieJar return action; }; - auto* disable_spoofing = add_user_agent("Disabled", Web::default_user_agent); + auto* disable_spoofing = add_user_agent("Disabled"sv, Web::default_user_agent); disable_spoofing->setChecked(true); for (auto const& user_agent : WebView::user_agents) - add_user_agent(user_agent.key.to_deprecated_string(), user_agent.value.to_deprecated_string()); + add_user_agent(user_agent.key, user_agent.value.to_deprecated_string()); auto* custom_user_agent_action = new QAction("Custom...", this); custom_user_agent_action->setCheckable(true); @@ -413,7 +413,7 @@ BrowserWindow::BrowserWindow(Vector const& initial_urls, WebView::CookieJar }); for (size_t i = 0; i < initial_urls.size(); ++i) { - auto url_string = qstring_from_ak_deprecated_string(initial_urls[i].serialize()); + auto url_string = qstring_from_ak_string(initial_urls[i].serialize()); new_tab(url_string, (i == 0) ? Web::HTML::ActivateTab::Yes : Web::HTML::ActivateTab::No); } @@ -480,7 +480,7 @@ Tab& BrowserWindow::create_new_tab(Web::HTML::ActivateTab activate_tab) }; tab_ptr->view().on_tab_open_request = [this](auto url, auto activate_tab) { - auto& tab = new_tab(qstring_from_ak_deprecated_string(url.to_deprecated_string()), activate_tab); + auto& tab = new_tab(qstring_from_ak_string(url.to_deprecated_string()), activate_tab); return tab.view().handle(); }; @@ -665,7 +665,7 @@ void BrowserWindow::copy_selected_text() auto text = m_current_tab->view().selected_text(); auto* clipboard = QGuiApplication::clipboard(); - clipboard->setText(qstring_from_ak_deprecated_string(text)); + clipboard->setText(qstring_from_ak_string(text)); } void BrowserWindow::resizeEvent(QResizeEvent* event) diff --git a/Ladybird/Qt/LocationEdit.cpp b/Ladybird/Qt/LocationEdit.cpp index 09a808dc40..9d679816da 100644 --- a/Ladybird/Qt/LocationEdit.cpp +++ b/Ladybird/Qt/LocationEdit.cpp @@ -37,7 +37,7 @@ LocationEdit::LocationEdit(QWidget* parent) auto query = MUST(ak_string_from_qstring(text())); if (auto url = WebView::sanitize_url(query, search_engine_url); url.has_value()) - setText(qstring_from_ak_deprecated_string(url->serialize())); + setText(qstring_from_ak_string(url->serialize())); }); connect(this, &QLineEdit::textEdited, [this] { diff --git a/Ladybird/Qt/Settings.cpp b/Ladybird/Qt/Settings.cpp index 65218bff0c..3f41028f44 100644 --- a/Ladybird/Qt/Settings.cpp +++ b/Ladybird/Qt/Settings.cpp @@ -17,7 +17,7 @@ Settings::Settings() m_qsettings = make("SerenityOS", "Ladybird", this); auto default_search_engine = WebView::default_search_engine(); - auto default_search_engine_name = qstring_from_ak_deprecated_string(default_search_engine.name); + auto default_search_engine_name = qstring_from_ak_string(default_search_engine.name); auto search_engine_name = m_qsettings->value("search_engine_name", default_search_engine_name).toString(); auto search_engine = WebView::find_search_engine_by_name(MUST(ak_string_from_qstring(search_engine_name))); @@ -62,7 +62,7 @@ void Settings::set_is_maximized(bool is_maximized) void Settings::set_search_engine(WebView::SearchEngine search_engine) { - m_qsettings->setValue("search_engine_name", qstring_from_ak_deprecated_string(search_engine.name)); + m_qsettings->setValue("search_engine_name", qstring_from_ak_string(search_engine.name)); m_search_engine = move(search_engine); } diff --git a/Ladybird/Qt/SettingsDialog.cpp b/Ladybird/Qt/SettingsDialog.cpp index 811e036bcc..7a55b8d0ba 100644 --- a/Ladybird/Qt/SettingsDialog.cpp +++ b/Ladybird/Qt/SettingsDialog.cpp @@ -24,7 +24,7 @@ SettingsDialog::SettingsDialog(QMainWindow* window) m_enable_search->setChecked(Settings::the()->enable_search()); m_search_engine_dropdown = make(this); - m_search_engine_dropdown->setText(qstring_from_ak_deprecated_string(Settings::the()->search_engine().name)); + m_search_engine_dropdown->setText(qstring_from_ak_string(Settings::the()->search_engine().name)); m_search_engine_dropdown->setMaximumWidth(200); m_enable_autocomplete = make(this); @@ -76,7 +76,7 @@ void SettingsDialog::setup_search_engines() QMenu* search_engine_menu = new QMenu(this); for (auto const& search_engine : WebView::search_engines()) { - auto search_engine_name = qstring_from_ak_deprecated_string(search_engine.name); + auto search_engine_name = qstring_from_ak_string(search_engine.name); QAction* action = new QAction(search_engine_name, this); connect(action, &QAction::triggered, this, [&, search_engine_name = std::move(search_engine_name)]() { diff --git a/Ladybird/Qt/StringUtils.cpp b/Ladybird/Qt/StringUtils.cpp index f7e44d7b52..59ec635f3f 100644 --- a/Ladybird/Qt/StringUtils.cpp +++ b/Ladybird/Qt/StringUtils.cpp @@ -16,13 +16,7 @@ ErrorOr ak_string_from_qstring(QString const& qstring) return String::from_utf8(StringView(qstring.toUtf8().data(), qstring.size())); } -QString qstring_from_ak_deprecated_string(AK::DeprecatedString const& ak_deprecated_string) +QString qstring_from_ak_string(StringView ak_string) { - return QString::fromUtf8(ak_deprecated_string.characters(), ak_deprecated_string.length()); -} - -QString qstring_from_ak_string(String const& ak_string) -{ - auto view = ak_string.bytes_as_string_view(); - return QString::fromUtf8(view.characters_without_null_termination(), view.length()); + return QString::fromUtf8(ak_string.characters_without_null_termination(), static_cast(ak_string.length())); } diff --git a/Ladybird/Qt/StringUtils.h b/Ladybird/Qt/StringUtils.h index 415ccdb84c..a605be63cf 100644 --- a/Ladybird/Qt/StringUtils.h +++ b/Ladybird/Qt/StringUtils.h @@ -9,9 +9,9 @@ #include #include #include +#include #include AK::DeprecatedString ak_deprecated_string_from_qstring(QString const&); ErrorOr ak_string_from_qstring(QString const&); -QString qstring_from_ak_deprecated_string(AK::DeprecatedString const&); -QString qstring_from_ak_string(String const&); +QString qstring_from_ak_string(StringView); diff --git a/Ladybird/Qt/Tab.cpp b/Ladybird/Qt/Tab.cpp index aa60ad974f..44cb67be95 100644 --- a/Ladybird/Qt/Tab.cpp +++ b/Ladybird/Qt/Tab.cpp @@ -107,7 +107,7 @@ Tab::Tab(BrowserWindow* window, WebContentOptions const& web_content_options, St }; view().on_link_hover = [this](auto const& url) { - m_hover_label->setText(qstring_from_ak_deprecated_string(url.to_deprecated_string())); + m_hover_label->setText(qstring_from_ak_string(url.to_deprecated_string())); update_hover_label(); m_hover_label->show(); }; @@ -148,7 +148,7 @@ Tab::Tab(BrowserWindow* window, WebContentOptions const& web_content_options, St QObject::connect(m_location_edit, &QLineEdit::returnPressed, this, &Tab::location_edit_return_pressed); view().on_title_change = [this](auto const& title) { - m_title = qstring_from_ak_deprecated_string(title); + m_title = qstring_from_ak_string(title); m_history.update_title(title); emit title_changed(tab_index(), m_title); @@ -628,7 +628,7 @@ void Tab::open_link_in_new_tab(URL const& url) void Tab::copy_link_url(URL const& url) { auto* clipboard = QGuiApplication::clipboard(); - clipboard->setText(qstring_from_ak_deprecated_string(url.to_deprecated_string())); + clipboard->setText(qstring_from_ak_string(url.to_deprecated_string())); } void Tab::location_edit_return_pressed() diff --git a/Ladybird/Qt/WebContentView.cpp b/Ladybird/Qt/WebContentView.cpp index e3ae308d7e..d87e7073a1 100644 --- a/Ladybird/Qt/WebContentView.cpp +++ b/Ladybird/Qt/WebContentView.cpp @@ -114,10 +114,10 @@ WebContentView::WebContentView(WebContentOptions const& web_content_options, Str update_cursor(cursor); }; - on_enter_tooltip_area = [this](auto position, auto tooltip) { + on_enter_tooltip_area = [this](auto position, auto const& tooltip) { QToolTip::showText( mapToGlobal(QPoint(position.x(), position.y())), - qstring_from_ak_deprecated_string(tooltip), + qstring_from_ak_string(tooltip), this); };