Skip to content

Commit fb1b1e0

Browse files
committed
qt: Save/restore column sizes of the tables in the Peers tab
1 parent 898dd9e commit fb1b1e0

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"),
@@ -552,6 +555,9 @@ RPCConsole::~RPCConsole()
552555
settings.setValue("RPCConsoleWidgetPeersTabSplitterSizes", ui->splitter->saveState());
553556
}
554557

558+
settings.setValue("PeersTabPeerHeaderState", m_peer_widget_header_state);
559+
settings.setValue("PeersTabBanlistHeaderState", m_banlist_widget_header_state);
560+
555561
m_node.rpcUnsetTimerInterface(rpcTimerInterface);
556562
delete rpcTimerInterface;
557563
delete ui;
@@ -640,9 +646,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
640646
ui->peerWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
641647
ui->peerWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
642648
ui->peerWidget->setContextMenuPolicy(Qt::CustomContextMenu);
643-
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
644-
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
645-
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
649+
650+
if (!ui->peerWidget->horizontalHeader()->restoreState(m_peer_widget_header_state)) {
651+
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
652+
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
653+
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
654+
}
646655
ui->peerWidget->horizontalHeader()->setStretchLastSection(true);
647656

648657
// create peer table context menu
@@ -664,8 +673,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
664673
ui->banlistWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
665674
ui->banlistWidget->setSelectionMode(QAbstractItemView::SingleSelection);
666675
ui->banlistWidget->setContextMenuPolicy(Qt::CustomContextMenu);
667-
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
668-
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
676+
677+
if (!ui->banlistWidget->horizontalHeader()->restoreState(m_banlist_widget_header_state)) {
678+
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
679+
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
680+
}
669681
ui->banlistWidget->horizontalHeader()->setStretchLastSection(true);
670682

671683
// create ban table context menu
@@ -1171,6 +1183,11 @@ void RPCConsole::showEvent(QShowEvent *event)
11711183

11721184
void RPCConsole::hideEvent(QHideEvent *event)
11731185
{
1186+
// It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1187+
// the columns of QTableView child widgets will have zero width at that moment.
1188+
m_peer_widget_header_state = ui->peerWidget->horizontalHeader()->saveState();
1189+
m_banlist_widget_header_state = ui->banlistWidget->horizontalHeader()->saveState();
1190+
11741191
QWidget::hideEvent(event);
11751192

11761193
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)