diff --git a/electrum/gui/qt/util.py b/electrum/gui/qt/util.py index 27c38bf1104..2d524aa6a82 100644 --- a/electrum/gui/qt/util.py +++ b/electrum/gui/qt/util.py @@ -680,14 +680,21 @@ def cb(success: bool, error: str, data: Optional[str]): return if not data: data = '' - if allow_multi: - new_text = self.text() + data + '\n' # TODO: unused? - else: - new_text = data - try: + try: + if allow_multi: + text = self.text() + if data in text: + return + if text and not text.endswith('\n'): + text += '\n' + text += data + text += '\n' + setText(text) + else: + new_text = data setText(new_text) - except Exception as e: - show_error(_('Invalid payment identifier in QR') + ':\n' + repr(e)) + except Exception as e: + show_error(_('Invalid payment identifier in QR') + ':\n' + repr(e)) from .qrreader import scan_qrcode if parent is None: @@ -725,14 +732,21 @@ def input_qr_from_screenshot( show_error(_("No QR code was found on the screen.")) return data = scanned_qr[0].data - if allow_multi: - new_text = self.text() + data + '\n' # TODO: unused? - else: - new_text = data - try: + try: + if allow_multi: + text = self.text() + if data in text: + return + if text and not text.endswith('\n'): + text += '\n' + text += data + text += '\n' + setText(text) + else: + new_text = data setText(new_text) - except Exception as e: - show_error(_('Invalid payment identifier in QR') + ':\n' + repr(e)) + except Exception as e: + show_error(_('Invalid payment identifier in QR') + ':\n' + repr(e)) def input_file( self,