diff --git a/UI/Headless/HeadlessWebView.cpp b/UI/Headless/HeadlessWebView.cpp index b25fe17c110..c70ecb758ad 100644 --- a/UI/Headless/HeadlessWebView.cpp +++ b/UI/Headless/HeadlessWebView.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024, Tim Flynn + * Copyright (c) 2024-2025, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ @@ -127,6 +127,20 @@ HeadlessWebView::HeadlessWebView(Core::AnonymousBuffer theme, Web::DevicePixelSi m_pending_prompt_text.clear(); }; + on_insert_clipboard_entry = [this](Web::Clipboard::SystemClipboardRepresentation entry, auto const&) { + Web::Clipboard::SystemClipboardItem item; + item.system_clipboard_representations.append(move(entry)); + + m_clipboard = move(item); + }; + + on_request_clipboard_entries = [this](auto request_id) { + if (m_clipboard.has_value()) + retrieved_clipboard_entries(request_id, { { *m_clipboard } }); + else + retrieved_clipboard_entries(request_id, {}); + }; + m_system_visibility_state = Web::HTML::VisibilityState::Visible; } diff --git a/UI/Headless/HeadlessWebView.h b/UI/Headless/HeadlessWebView.h index d0f45731601..fcf3bbb6355 100644 --- a/UI/Headless/HeadlessWebView.h +++ b/UI/Headless/HeadlessWebView.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024, Tim Flynn + * Copyright (c) 2024-2025, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ @@ -51,6 +51,9 @@ private: Web::Page::PendingDialog m_pending_dialog { Web::Page::PendingDialog::None }; Optional m_pending_prompt_text; + + // FIXME: We should implement UI-agnostic platform APIs to interact with the system clipboard. + Optional m_clipboard; }; }