Переглянути джерело

LibGUI: Make paste access to Clipboard atomic

This avoids data race issues and saves a synchronous request to the
ClipboardServer.
Ben Wiederhake 3 роки тому
батько
коміт
c80dcc4671
1 змінених файлів з 5 додано та 6 видалено
  1. 5 6
      Userland/Libraries/LibGUI/TextEditor.cpp

+ 5 - 6
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()