Skip to content

Commit 21d87bb

Browse files
committed
Merge #256: Save/restore column sizes of the tables in the Peers tab
fb1b1e0 qt: Save/restore column sizes of the tables in the Peers tab (Hennadii Stepanov) Pull request description: ACKs for top commit: jonatack: ACK fb1b1e0 code review, debug-built and tested jarolrod: ACK fb1b1e0 Tree-SHA512: f93495ecd13e4202aba61b407fffbeec855f5b0c1cc027197c78edddd7d11c87ebdb0fcb1daac242f0407323b31f4e7e0313bd76113a5241e4c868a8829af20a
2 parents 916f45e + fb1b1e0 commit 21d87bb

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
@@ -487,6 +487,9 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
487487
ui->splitter->restoreState(settings.value("RPCConsoleWidgetPeersTabSplitterSizes").toByteArray());
488488
}
489489

490+
m_peer_widget_header_state = settings.value("PeersTabPeerHeaderState").toByteArray();
491+
m_banlist_widget_header_state = settings.value("PeersTabBanlistHeaderState").toByteArray();
492+
490493
constexpr QChar nonbreaking_hyphen(8209);
491494
const std::vector<QString> CONNECTION_TYPE_DOC{
492495
tr("Inbound: initiated by peer"),
@@ -570,6 +573,9 @@ RPCConsole::~RPCConsole()
570573
settings.setValue("RPCConsoleWidgetPeersTabSplitterSizes", ui->splitter->saveState());
571574
}
572575

576+
settings.setValue("PeersTabPeerHeaderState", m_peer_widget_header_state);
577+
settings.setValue("PeersTabBanlistHeaderState", m_banlist_widget_header_state);
578+
573579
m_node.rpcUnsetTimerInterface(rpcTimerInterface);
574580
delete rpcTimerInterface;
575581
delete ui;
@@ -658,9 +664,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
658664
ui->peerWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
659665
ui->peerWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
660666
ui->peerWidget->setContextMenuPolicy(Qt::CustomContextMenu);
661-
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
662-
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
663-
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
667+
668+
if (!ui->peerWidget->horizontalHeader()->restoreState(m_peer_widget_header_state)) {
669+
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
670+
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
671+
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
672+
}
664673
ui->peerWidget->horizontalHeader()->setStretchLastSection(true);
665674
ui->peerWidget->setItemDelegateForColumn(PeerTableModel::NetNodeId, new PeerIdViewDelegate(this));
666675

@@ -683,8 +692,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
683692
ui->banlistWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
684693
ui->banlistWidget->setSelectionMode(QAbstractItemView::SingleSelection);
685694
ui->banlistWidget->setContextMenuPolicy(Qt::CustomContextMenu);
686-
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
687-
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
695+
696+
if (!ui->banlistWidget->horizontalHeader()->restoreState(m_banlist_widget_header_state)) {
697+
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
698+
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
699+
}
688700
ui->banlistWidget->horizontalHeader()->setStretchLastSection(true);
689701

690702
// create ban table context menu
@@ -1190,6 +1202,11 @@ void RPCConsole::showEvent(QShowEvent *event)
11901202

11911203
void RPCConsole::hideEvent(QHideEvent *event)
11921204
{
1205+
// It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1206+
// the columns of QTableView child widgets will have zero width at that moment.
1207+
m_peer_widget_header_state = ui->peerWidget->horizontalHeader()->saveState();
1208+
m_banlist_widget_header_state = ui->banlistWidget->horizontalHeader()->saveState();
1209+
11931210
QWidget::hideEvent(event);
11941211

11951212
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;
@@ -167,6 +168,8 @@ public Q_SLOTS:
167168
QThread thread;
168169
WalletModel* m_last_wallet_model{nullptr};
169170
bool m_is_executing{false};
171+
QByteArray m_peer_widget_header_state;
172+
QByteArray m_banlist_widget_header_state;
170173

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

0 commit comments

Comments
 (0)