From ff17f6877ac4cf08d417cc6872f742ef242f344b Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Sat, 20 Nov 2021 14:20:30 +0100 Subject: [PATCH] LibVT: Make paste access to Clipboard atomic This avoids data race issues and saves a synchronous request to ClipboardServer. --- Userland/Libraries/LibVT/TerminalWidget.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Userland/Libraries/LibVT/TerminalWidget.cpp b/Userland/Libraries/LibVT/TerminalWidget.cpp index 50da722730..3b7c7e0e90 100644 --- a/Userland/Libraries/LibVT/TerminalWidget.cpp +++ b/Userland/Libraries/LibVT/TerminalWidget.cpp @@ -752,13 +752,12 @@ void TerminalWidget::paste() if (m_ptm_fd == -1) return; - auto mime_type = GUI::Clipboard::the().mime_type(); + auto [data, mime_type, _] = GUI::Clipboard::the().data_and_type(); if (!mime_type.starts_with("text/")) return; - auto text = GUI::Clipboard::the().data(); - if (text.is_empty()) + if (data.is_empty()) return; - send_non_user_input(text); + send_non_user_input(data); } void TerminalWidget::copy() @@ -1167,7 +1166,8 @@ void TerminalWidget::update_copy_action() void TerminalWidget::update_paste_action() { - m_paste_action->set_enabled(GUI::Clipboard::the().mime_type().starts_with("text/") && !GUI::Clipboard::the().data().is_empty()); + auto [data, mime_type, _] = GUI::Clipboard::the().data_and_type(); + m_paste_action->set_enabled(mime_type.starts_with("text/") && !data.is_empty()); } void TerminalWidget::set_color_scheme(StringView name)