Skip to content

Commit 3be79a9

Browse files
hebastoknst
authored andcommitted
Merge bitcoin-core/gui#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
1 parent f4fccd3 commit 3be79a9

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
@@ -505,6 +505,9 @@ RPCConsole::RPCConsole(interfaces::Node& node, QWidget* parent, Qt::WindowFlags
505505
ui->splitter->restoreState(settings.value("RPCConsoleWidgetPeersTabSplitterSizes").toByteArray());
506506
}
507507

508+
m_peer_widget_header_state = settings.value("PeersTabPeerHeaderState").toByteArray();
509+
m_banlist_widget_header_state = settings.value("PeersTabBanlistHeaderState").toByteArray();
510+
508511
constexpr QChar nonbreaking_hyphen(8209);
509512
const std::vector<QString> CONNECTION_TYPE_DOC{
510513
//: Explanatory text for an inbound peer connection.
@@ -610,6 +613,9 @@ RPCConsole::~RPCConsole()
610613
settings.setValue("RPCConsoleWidgetPeersTabSplitterSizes", ui->splitter->saveState());
611614
}
612615

616+
settings.setValue("PeersTabPeerHeaderState", m_peer_widget_header_state);
617+
settings.setValue("PeersTabBanlistHeaderState", m_banlist_widget_header_state);
618+
613619
m_node.rpcUnsetTimerInterface(rpcTimerInterface);
614620
delete rpcTimerInterface;
615621
delete pageButtons;
@@ -701,9 +707,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
701707
ui->peerWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
702708
ui->peerWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
703709
ui->peerWidget->setContextMenuPolicy(Qt::CustomContextMenu);
704-
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
705-
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
706-
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
710+
711+
if (!ui->peerWidget->horizontalHeader()->restoreState(m_peer_widget_header_state)) {
712+
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
713+
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
714+
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
715+
}
707716
ui->peerWidget->horizontalHeader()->setStretchLastSection(true);
708717
ui->peerWidget->setItemDelegateForColumn(PeerTableModel::NetNodeId, new PeerIdViewDelegate(this));
709718

@@ -726,8 +735,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
726735
ui->banlistWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
727736
ui->banlistWidget->setSelectionMode(QAbstractItemView::SingleSelection);
728737
ui->banlistWidget->setContextMenuPolicy(Qt::CustomContextMenu);
729-
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
730-
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
738+
739+
if (!ui->banlistWidget->horizontalHeader()->restoreState(m_banlist_widget_header_state)) {
740+
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
741+
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
742+
}
731743
ui->banlistWidget->horizontalHeader()->setStretchLastSection(true);
732744

733745
// create ban table context menu
@@ -1357,6 +1369,11 @@ void RPCConsole::showEvent(QShowEvent *event)
13571369

13581370
void RPCConsole::hideEvent(QHideEvent *event)
13591371
{
1372+
// It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1373+
// the columns of QTableView child widgets will have zero width at that moment.
1374+
m_peer_widget_header_state = ui->peerWidget->horizontalHeader()->saveState();
1375+
m_banlist_widget_header_state = ui->banlistWidget->horizontalHeader()->saveState();
1376+
13601377
QWidget::hideEvent(event);
13611378

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

src/qt/rpcconsole.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
#include <net.h>
1313
#include <uint256.h>
1414

15-
#include <QWidget>
15+
#include <QByteArray>
1616
#include <QCompleter>
1717
#include <QThread>
18+
#include <QWidget>
1819

1920
class ClientModel;
2021
class RPCTimerInterface;
@@ -190,6 +191,8 @@ public Q_SLOTS:
190191
QThread thread;
191192
WalletModel* m_last_wallet_model{nullptr};
192193
bool m_is_executing{false};
194+
QByteArray m_peer_widget_header_state;
195+
QByteArray m_banlist_widget_header_state;
193196

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

0 commit comments

Comments
 (0)