From c80dcc46719583d8cf3ec2d57d349e71cd998f04 Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Sat, 20 Nov 2021 14:59:58 +0100 Subject: LibGUI: Make paste access to Clipboard atomic This avoids data race issues and saves a synchronous request to the ClipboardServer. --- Userland/Libraries/LibGUI/TextEditor.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'Userland') diff --git a/Userland/Libraries/LibGUI/TextEditor.cpp b/Userland/Libraries/LibGUI/TextEditor.cpp index 8ad2bd30dd..c69bb69f8a 100644 --- a/Userland/Libraries/LibGUI/TextEditor.cpp +++ b/Userland/Libraries/LibGUI/TextEditor.cpp @@ -1453,18 +1453,17 @@ void TextEditor::paste() if (!is_editable()) return; - if (!Clipboard::the().mime_type().starts_with("text/")) + auto [data, mime_type, _] = GUI::Clipboard::the().data_and_type(); + if (!mime_type.starts_with("text/")) return; - auto paste_text = Clipboard::the().data(); - - if (paste_text.is_empty()) + if (data.is_empty()) return; - dbgln_if(TEXTEDITOR_DEBUG, "Paste: \"{}\"", String::copy(paste_text)); + dbgln_if(TEXTEDITOR_DEBUG, "Paste: \"{}\"", String::copy(data)); TemporaryChange change(m_automatic_indentation_enabled, false); - insert_at_cursor_or_replace_selection(paste_text); + insert_at_cursor_or_replace_selection(data); } void TextEditor::defer_reflow() -- cgit v1.2.3