Skip to content

Commit 0337044

Browse files
committed
qt: Save/restore column sizes of the tables in the Peers tab
1 parent 4bc3b16 commit 0337044

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

src/qt/rpcconsole.cpp

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,9 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
469469
ui->splitter->restoreState(settings.value("RPCConsoleWidgetPeersTabSplitterSizes").toByteArray());
470470
}
471471

472+
m_peer_widget_header_state = settings.value("PeersTabPeerHeaderState").toByteArray();
473+
m_banlist_widget_header_state = settings.value("PeersTabBanlistHeaderState").toByteArray();
474+
472475
constexpr QChar nonbreaking_hyphen(8209);
473476
const std::vector<QString> CONNECTION_TYPE_DOC{
474477
tr("Inbound: initiated by peer"),
@@ -542,6 +545,9 @@ RPCConsole::~RPCConsole()
542545
settings.setValue("RPCConsoleWidgetPeersTabSplitterSizes", ui->splitter->saveState());
543546
}
544547

548+
settings.setValue("PeersTabPeerHeaderState", m_peer_widget_header_state);
549+
settings.setValue("PeersTabBanlistHeaderState", m_banlist_widget_header_state);
550+
545551
m_node.rpcUnsetTimerInterface(rpcTimerInterface);
546552
delete rpcTimerInterface;
547553
delete ui;
@@ -630,9 +636,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
630636
ui->peerWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
631637
ui->peerWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
632638
ui->peerWidget->setContextMenuPolicy(Qt::CustomContextMenu);
633-
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
634-
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
635-
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
639+
640+
if (!ui->peerWidget->horizontalHeader()->restoreState(m_peer_widget_header_state)) {
641+
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
642+
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
643+
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
644+
}
636645
ui->peerWidget->horizontalHeader()->setStretchLastSection(true);
637646

638647
// create peer table context menu
@@ -654,8 +663,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
654663
ui->banlistWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
655664
ui->banlistWidget->setSelectionMode(QAbstractItemView::SingleSelection);
656665
ui->banlistWidget->setContextMenuPolicy(Qt::CustomContextMenu);
657-
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
658-
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
666+
667+
if (!ui->banlistWidget->horizontalHeader()->restoreState(m_banlist_widget_header_state)) {
668+
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
669+
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
670+
}
659671
ui->banlistWidget->horizontalHeader()->setStretchLastSection(true);
660672

661673
// create ban table context menu
@@ -1118,6 +1130,11 @@ void RPCConsole::showEvent(QShowEvent *event)
11181130

11191131
void RPCConsole::hideEvent(QHideEvent *event)
11201132
{
1133+
// It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1134+
// the columns of QTableView child widgets will have zero width at that moment.
1135+
m_peer_widget_header_state = ui->peerWidget->horizontalHeader()->saveState();
1136+
m_banlist_widget_header_state = ui->banlistWidget->horizontalHeader()->saveState();
1137+
11211138
QWidget::hideEvent(event);
11221139

11231140
if (!clientModel || !clientModel->getPeerTableModel())

src/qt/rpcconsole.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010

1111
#include <net.h>
1212

13-
#include <QWidget>
13+
#include <QByteArray>
1414
#include <QCompleter>
1515
#include <QThread>
16+
#include <QWidget>
1617

1718
class ClientModel;
1819
class PlatformStyle;
@@ -165,6 +166,8 @@ public Q_SLOTS:
165166
QCompleter *autoCompleter = nullptr;
166167
QThread thread;
167168
WalletModel* m_last_wallet_model{nullptr};
169+
QByteArray m_peer_widget_header_state;
170+
QByteArray m_banlist_widget_header_state;
168171

169172
/** Update UI with latest network info from model. */
170173
void updateNetworkState();

0 commit comments

Comments
 (0)