@@ -469,6 +469,9 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
469
469
ui->splitter ->restoreState (settings.value (" RPCConsoleWidgetPeersTabSplitterSizes" ).toByteArray ());
470
470
}
471
471
472
+ m_peer_widget_header_state = settings.value (" PeersTabPeerHeaderState" ).toByteArray ();
473
+ m_banlist_widget_header_state = settings.value (" PeersTabBanlistHeaderState" ).toByteArray ();
474
+
472
475
constexpr QChar nonbreaking_hyphen (8209 );
473
476
const std::vector<QString> CONNECTION_TYPE_DOC{
474
477
tr (" Inbound: initiated by peer" ),
@@ -552,6 +555,9 @@ RPCConsole::~RPCConsole()
552
555
settings.setValue (" RPCConsoleWidgetPeersTabSplitterSizes" , ui->splitter ->saveState ());
553
556
}
554
557
558
+ settings.setValue (" PeersTabPeerHeaderState" , m_peer_widget_header_state);
559
+ settings.setValue (" PeersTabBanlistHeaderState" , m_banlist_widget_header_state);
560
+
555
561
m_node.rpcUnsetTimerInterface (rpcTimerInterface);
556
562
delete rpcTimerInterface;
557
563
delete ui;
@@ -640,9 +646,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
640
646
ui->peerWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
641
647
ui->peerWidget ->setSelectionMode (QAbstractItemView::ExtendedSelection);
642
648
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
+ }
646
655
ui->peerWidget ->horizontalHeader ()->setStretchLastSection (true );
647
656
648
657
// create peer table context menu
@@ -664,8 +673,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
664
673
ui->banlistWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
665
674
ui->banlistWidget ->setSelectionMode (QAbstractItemView::SingleSelection);
666
675
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
+ }
669
681
ui->banlistWidget ->horizontalHeader ()->setStretchLastSection (true );
670
682
671
683
// create ban table context menu
@@ -1171,6 +1183,11 @@ void RPCConsole::showEvent(QShowEvent *event)
1171
1183
1172
1184
void RPCConsole::hideEvent (QHideEvent *event)
1173
1185
{
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
+
1174
1191
QWidget::hideEvent (event);
1175
1192
1176
1193
if (!clientModel || !clientModel->getPeerTableModel ())
0 commit comments