tqt wizard: fix scanning qr code when restoring from xpub - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 1c9a6f5770c5183aced5238e23d8e31eec8269c2 DIR parent 4961020e01c515735bb885704fb85c7ae6c73ab1 HTML Author: SomberNight <somber.night@protonmail.com> Date: Wed, 8 Jul 2020 01:51:14 +0200 qt wizard: fix scanning qr code when restoring from xpub fixes #6342 Diffstat: M electrum/gui/qt/qrtextedit.py | 6 +++--- M electrum/gui/qt/util.py | 13 +++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) --- DIR diff --git a/electrum/gui/qt/qrtextedit.py b/electrum/gui/qt/qrtextedit.py t@@ -60,9 +60,9 @@ class ScanQRTextEdit(ButtonsTextEdit, MessageBoxMixin): def qr_input(self): from electrum import qrscanner - main_window = get_parent_main_window(self) - assert main_window - config = main_window.config + window_or_wizard = get_parent_main_window(self, allow_wizard=True) + assert window_or_wizard + config = window_or_wizard.config try: data = qrscanner.scan_barcode(config.get_video_device()) except BaseException as e: DIR diff --git a/electrum/gui/qt/util.py b/electrum/gui/qt/util.py t@@ -30,6 +30,7 @@ from electrum.invoices import PR_UNPAID, PR_PAID, PR_EXPIRED, PR_INFLIGHT, PR_UN if TYPE_CHECKING: from .main_window import ElectrumWindow + from .installwizard import InstallWizard if platform.system() == 'Windows': t@@ -945,19 +946,23 @@ def export_meta_gui(electrum_window, title, exporter): .format(title, str(filename))) -def get_parent_main_window(widget): +def get_parent_main_window( + widget, *, allow_wizard: bool = False, +) -> Union[None, 'ElectrumWindow', 'InstallWizard']: """Returns a reference to the ElectrumWindow this widget belongs to.""" from .main_window import ElectrumWindow from .transaction_dialog import TxDialog + from .installwizard import InstallWizard for _ in range(100): if widget is None: return None if isinstance(widget, ElectrumWindow): return widget - elif isinstance(widget, TxDialog): + if isinstance(widget, TxDialog): return widget.main_window - else: - widget = widget.parentWidget() + if isinstance(widget, InstallWizard) and allow_wizard: + return widget + widget = widget.parentWidget() return None