Skip to content

Commit dda2f65

Browse files
committed
qt: Save/restore column sizes of the tables in the Peers tab
1 parent 681c21b commit dda2f65

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
@@ -523,6 +523,9 @@ RPCConsole::~RPCConsole()
523523
QSettings settings;
524524
settings.setValue("RPCConsoleWindowGeometry", saveGeometry());
525525
settings.setValue("PeersTabSplitterSizes", ui->splitter->saveState());
526+
settings.setValue("PeersTabPeerHeaderState", m_peer_widget_header_state);
527+
settings.setValue("PeersTabBanlistHeaderState", m_banlist_widget_header_state);
528+
526529
m_node.rpcUnsetTimerInterface(rpcTimerInterface);
527530
delete rpcTimerInterface;
528531
delete ui;
@@ -612,9 +615,14 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
612615
ui->peerWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
613616
ui->peerWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
614617
ui->peerWidget->setContextMenuPolicy(Qt::CustomContextMenu);
615-
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
616-
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
617-
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
618+
619+
QSettings settings;
620+
m_peer_widget_header_state = settings.value("PeersTabPeerHeaderState").toByteArray();
621+
if (!ui->peerWidget->horizontalHeader()->restoreState(m_peer_widget_header_state)) {
622+
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
623+
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
624+
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
625+
}
618626
ui->peerWidget->horizontalHeader()->setStretchLastSection(true);
619627

620628
// create peer table context menu actions
@@ -655,8 +663,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
655663
ui->banlistWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
656664
ui->banlistWidget->setSelectionMode(QAbstractItemView::SingleSelection);
657665
ui->banlistWidget->setContextMenuPolicy(Qt::CustomContextMenu);
658-
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
659-
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
666+
667+
m_banlist_widget_header_state = settings.value("PeersTabBanlistHeaderState").toByteArray();
668+
if (!ui->banlistWidget->horizontalHeader()->restoreState(m_banlist_widget_header_state)) {
669+
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
670+
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
671+
}
660672
ui->banlistWidget->horizontalHeader()->setStretchLastSection(true);
661673

662674
// create ban table context menu action
@@ -1186,6 +1198,11 @@ void RPCConsole::showEvent(QShowEvent *event)
11861198

11871199
void RPCConsole::hideEvent(QHideEvent *event)
11881200
{
1201+
// It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1202+
// the columns of QTableView child widgets will have zero width at that moment.
1203+
m_peer_widget_header_state = ui->peerWidget->horizontalHeader()->saveState();
1204+
m_banlist_widget_header_state = ui->banlistWidget->horizontalHeader()->saveState();
1205+
11891206
QWidget::hideEvent(event);
11901207

11911208
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;
@@ -169,6 +170,8 @@ public Q_SLOTS:
169170
QCompleter *autoCompleter = nullptr;
170171
QThread thread;
171172
WalletModel* m_last_wallet_model{nullptr};
173+
QByteArray m_peer_widget_header_state;
174+
QByteArray m_banlist_widget_header_state;
172175

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

0 commit comments

Comments
 (0)