diff --git a/Userland/Libraries/LibGUI/Clipboard.cpp b/Userland/Libraries/LibGUI/Clipboard.cpp index 25cd6c07f1..457189f515 100644 --- a/Userland/Libraries/LibGUI/Clipboard.cpp +++ b/Userland/Libraries/LibGUI/Clipboard.cpp @@ -59,9 +59,14 @@ Clipboard::DataAndType Clipboard::fetch_data_and_type() const { auto response = connection().get_clipboard_data(); auto type = response.mime_type(); - auto metadata = response.metadata().entries(); + auto metadata = response.metadata(); + + auto metadata_clone_or_error = metadata.clone(); + if (metadata_clone_or_error.is_error()) + return {}; + if (!response.data().is_valid()) - return { {}, type, metadata }; + return { {}, type, metadata_clone_or_error.release_value() }; auto data = ByteBuffer::copy(response.data().data(), response.data().size()); if (data.is_error()) return {}; diff --git a/Userland/Services/Clipboard/ClipboardServer.ipc b/Userland/Services/Clipboard/ClipboardServer.ipc index 8145a9f7a6..3bacac59e1 100644 --- a/Userland/Services/Clipboard/ClipboardServer.ipc +++ b/Userland/Services/Clipboard/ClipboardServer.ipc @@ -2,6 +2,6 @@ endpoint ClipboardServer { - get_clipboard_data() => (Core::AnonymousBuffer data, [UTF8] DeprecatedString mime_type, IPC::Dictionary metadata) - set_clipboard_data(Core::AnonymousBuffer data, [UTF8] DeprecatedString mime_type, IPC::Dictionary metadata) =| + get_clipboard_data() => (Core::AnonymousBuffer data, [UTF8] DeprecatedString mime_type, HashMap metadata) + set_clipboard_data(Core::AnonymousBuffer data, [UTF8] DeprecatedString mime_type, HashMap metadata) =| } diff --git a/Userland/Services/Clipboard/ConnectionFromClient.cpp b/Userland/Services/Clipboard/ConnectionFromClient.cpp index a58892e447..e42f14276e 100644 --- a/Userland/Services/Clipboard/ConnectionFromClient.cpp +++ b/Userland/Services/Clipboard/ConnectionFromClient.cpp @@ -30,9 +30,9 @@ void ConnectionFromClient::die() s_connections.remove(client_id()); } -void ConnectionFromClient::set_clipboard_data(Core::AnonymousBuffer const& data, DeprecatedString const& mime_type, IPC::Dictionary const& metadata) +void ConnectionFromClient::set_clipboard_data(Core::AnonymousBuffer const& data, DeprecatedString const& mime_type, HashMap const& metadata) { - Storage::the().set_data(data, mime_type, metadata.entries()); + Storage::the().set_data(data, mime_type, metadata); } Messages::ClipboardServer::GetClipboardDataResponse ConnectionFromClient::get_clipboard_data() diff --git a/Userland/Services/Clipboard/ConnectionFromClient.h b/Userland/Services/Clipboard/ConnectionFromClient.h index a04d62efaa..68ffa747df 100644 --- a/Userland/Services/Clipboard/ConnectionFromClient.h +++ b/Userland/Services/Clipboard/ConnectionFromClient.h @@ -30,7 +30,7 @@ private: explicit ConnectionFromClient(NonnullOwnPtr, int client_id); virtual Messages::ClipboardServer::GetClipboardDataResponse get_clipboard_data() override; - virtual void set_clipboard_data(Core::AnonymousBuffer const&, DeprecatedString const&, IPC::Dictionary const&) override; + virtual void set_clipboard_data(Core::AnonymousBuffer const&, DeprecatedString const&, HashMap const&) override; }; } diff --git a/Userland/Services/SpiceAgent/ConnectionToClipboardServer.cpp b/Userland/Services/SpiceAgent/ConnectionToClipboardServer.cpp index ef945af77e..0d7c316b39 100644 --- a/Userland/Services/SpiceAgent/ConnectionToClipboardServer.cpp +++ b/Userland/Services/SpiceAgent/ConnectionToClipboardServer.cpp @@ -17,7 +17,7 @@ RefPtr ConnectionToClipboardServer::get_bitmap() if (clipping.mime_type() != "image/x-serenityos") return nullptr; - HashMap const& metadata = clipping.metadata().entries(); + HashMap const& metadata = clipping.metadata(); auto width = metadata.get("width").value_or("0").to_uint(); if (!width.has_value() || width.value() == 0) return nullptr;