From 0e07128ccfc4ead336513a60dd52d8a158a8f79c Mon Sep 17 00:00:00 2001 From: SomberNight Date: Fri, 23 Jan 2026 17:35:14 +0000 Subject: [PATCH] qt: fix: addresses tab broken for imported watchonly wallets fixes https://github.com/spesmilo/electrum/issues/10435 regression from https://github.com/spesmilo/electrum/pull/10376 --- electrum/gui/qt/address_list.py | 12 +++++++++--- electrum/wallet.py | 5 ++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/electrum/gui/qt/address_list.py b/electrum/gui/qt/address_list.py index 80e5f09c3..883651155 100644 --- a/electrum/gui/qt/address_list.py +++ b/electrum/gui/qt/address_list.py @@ -25,7 +25,7 @@ import enum from enum import IntEnum -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Optional from PyQt6.QtCore import Qt, QPersistentModelIndex, QModelIndex from PyQt6.QtGui import QStandardItemModel, QStandardItem, QFont @@ -244,8 +244,14 @@ class AddressList(MyTreeView): # update counter self.num_addr_label.setText(_("{} addresses").format(num_shown)) - def address_index_as_sortable_key(self, address_index: 'AddressIndexGeneric'): - return address_index if isinstance(address_index, str) else ''.join(f'{i:08x}' for i in address_index) + @staticmethod + def address_index_as_sortable_key(address_index: Optional['AddressIndexGeneric']) -> str: + if isinstance(address_index, str): # pubkey hex + return address_index + elif address_index is None: + return "" + else: + return "".join(f"{i:08x}" for i in address_index) def refresh_row(self, key, row): assert row is not None diff --git a/electrum/wallet.py b/electrum/wallet.py index 0ab2343ef..247dfa9c4 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -3784,7 +3784,10 @@ class Imported_Wallet(Simple_Wallet): return self.db.has_imported_address(address) def get_address_index(self, address) -> Optional[str]: - # returns None if address is not mine + # Return pubkey for address if we know it. + # If we don't know it, return None, which might happen: + # - if address is not is_mine + # - if this is an "imported address", we don't have the pubkey for. (watch-only imported wallet) return self.get_public_key(address) def get_address_path_str(self, address):