@@ -487,6 +487,9 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
487
487
ui->splitter ->restoreState (settings.value (" RPCConsoleWidgetPeersTabSplitterSizes" ).toByteArray ());
488
488
}
489
489
490
+ m_peer_widget_header_state = settings.value (" PeersTabPeerHeaderState" ).toByteArray ();
491
+ m_banlist_widget_header_state = settings.value (" PeersTabBanlistHeaderState" ).toByteArray ();
492
+
490
493
constexpr QChar nonbreaking_hyphen (8209 );
491
494
const std::vector<QString> CONNECTION_TYPE_DOC{
492
495
tr (" Inbound: initiated by peer" ),
@@ -570,6 +573,9 @@ RPCConsole::~RPCConsole()
570
573
settings.setValue (" RPCConsoleWidgetPeersTabSplitterSizes" , ui->splitter ->saveState ());
571
574
}
572
575
576
+ settings.setValue (" PeersTabPeerHeaderState" , m_peer_widget_header_state);
577
+ settings.setValue (" PeersTabBanlistHeaderState" , m_banlist_widget_header_state);
578
+
573
579
m_node.rpcUnsetTimerInterface (rpcTimerInterface);
574
580
delete rpcTimerInterface;
575
581
delete ui;
@@ -658,9 +664,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
658
664
ui->peerWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
659
665
ui->peerWidget ->setSelectionMode (QAbstractItemView::ExtendedSelection);
660
666
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
+ }
664
673
ui->peerWidget ->horizontalHeader ()->setStretchLastSection (true );
665
674
ui->peerWidget ->setItemDelegateForColumn (PeerTableModel::NetNodeId, new PeerIdViewDelegate (this ));
666
675
@@ -683,8 +692,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
683
692
ui->banlistWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
684
693
ui->banlistWidget ->setSelectionMode (QAbstractItemView::SingleSelection);
685
694
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
+ }
688
700
ui->banlistWidget ->horizontalHeader ()->setStretchLastSection (true );
689
701
690
702
// create ban table context menu
@@ -1190,6 +1202,11 @@ void RPCConsole::showEvent(QShowEvent *event)
1190
1202
1191
1203
void RPCConsole::hideEvent (QHideEvent *event)
1192
1204
{
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
+
1193
1210
QWidget::hideEvent (event);
1194
1211
1195
1212
if (!clientModel || !clientModel->getPeerTableModel ())
0 commit comments