@@ -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
13581370void 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 ())
0 commit comments