From 0a879bd2ed7b2fe75ad178f8cbe078fb974bcbca Mon Sep 17 00:00:00 2001 From: Kris Cherven <50562493+krischerven@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:00:12 +0000 Subject: [PATCH] Fix pasting from the primary selection (#3413) * Fix clipboard pasting from the primary selection * Small renaming * Fix submodules * Fix pylint false positive --- CONTRIBUTORS | 7 ++++--- qt/aqt/editor.py | 22 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4a8debe67..ce4c02e44 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -163,7 +163,7 @@ Lucas Scharenbroch Antonio Cavallo Han Yeong-woo Jean Khawand -Pedro Schreiber +Pedro Schreiber Foxy_null Arbyste Vasll @@ -187,11 +187,12 @@ Christian Donat Asuka Minato Dillon Baldwin Voczi -Ben Nguyen <105088397+bpnguyen107@users.noreply.github.com> +Ben Nguyen <105088397+bpnguyen107@users.noreply.github.com> Themis Demetriades Luke Bartholomew Gregory Abrasaldo -Taylor Obyen +Taylor Obyen +Kris Cherven ******************** diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py index 74cc6e55b..2c53a9f1c 100644 --- a/qt/aqt/editor.py +++ b/qt/aqt/editor.py @@ -1452,19 +1452,33 @@ class EditorWebView(AnkiWebView): return not strip_html def _onPaste(self, mode: QClipboard.Mode) -> None: - # Since _on_clipboard_change doesn't always trigger properly on macOS, we do a double check if any changes were made before pasting + # Since _on_clipboard_change doesn't always trigger properly on macOS, + # we do a double check if any changes were made before pasting if self._last_known_clipboard_mime != self.editor.mw.app.clipboard().mimeData(): self._on_clipboard_change() extended = self._wantsExtendedPaste() - if html := self._internal_field_text_for_paste: + + def reuse_internal(): print("reuse internal") - self.editor.doPaste(html, True, extended) - else: + if html := self._internal_field_text_for_paste: + self.editor.doPaste(html, True, extended) + return True + return False + + def use_clipboard(): print("use clipboard") mime = self.editor.mw.app.clipboard().mimeData(mode=mode) html, internal = self._processMime(mime, extended) if html: self.editor.doPaste(html, internal, extended) + return True + return False + + if mode == QClipboard.Mode.Selection: + if not use_clipboard(): + reuse_internal() + else: + reuse_internal() def onPaste(self) -> None: self._onPaste(QClipboard.Mode.Clipboard)