electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 95979ba58d93ae83ec519f7f8f8468105e3f3e9e
parent 7488cc91cdbece4f93b0047e36cfba65ae8b01a2
Author: SomberNight <somber.night@protonmail.com>
Date:   Thu, 26 Mar 2020 02:54:21 +0100

qt channels list: make selection more in line with other tabs

(allow selecting none, and allow multi-select)

Diffstat:
Melectrum/gui/qt/channels_list.py | 16+++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/electrum/gui/qt/channels_list.py b/electrum/gui/qt/channels_list.py @@ -4,7 +4,8 @@ from enum import IntEnum from PyQt5 import QtCore, QtGui from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QMenu, QHBoxLayout, QLabel, QVBoxLayout, QGridLayout, QLineEdit, QPushButton +from PyQt5.QtWidgets import (QMenu, QHBoxLayout, QLabel, QVBoxLayout, QGridLayout, QLineEdit, + QPushButton, QAbstractItemView) from PyQt5.QtGui import QFont from electrum.util import bh2u, NotEnoughFunds, NoDynamicFeeEstimates @@ -46,6 +47,7 @@ class ChannelsList(MyTreeView): super().__init__(parent, self.create_menu, stretch_column=self.Columns.NODE_ID, editable_columns=[]) self.setModel(QtGui.QStandardItemModel(self)) + self.setSelectionMode(QAbstractItemView.ExtendedSelection) self.main_window = parent self.update_rows.connect(self.do_update_rows) self.update_single_row.connect(self.do_update_single_row) @@ -121,7 +123,15 @@ class ChannelsList(MyTreeView): def create_menu(self, position): menu = QMenu() menu.setSeparatorsCollapsible(True) # consecutive separators are merged together - idx = self.selectionModel().currentIndex() + selected = self.selected_in_column(self.Columns.NODE_ID) + if not selected: + return + multi_select = len(selected) > 1 + if multi_select: + return + idx = self.indexAt(position) + if not idx.isValid(): + return item = self.model().itemFromIndex(idx) if not item: return @@ -153,7 +163,7 @@ class ChannelsList(MyTreeView): menu.exec_(self.viewport().mapToGlobal(position)) @QtCore.pyqtSlot(Channel) - def do_update_single_row(self, chan): + def do_update_single_row(self, chan: Channel): lnworker = self.parent.wallet.lnworker if not lnworker: return