@@ -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" ),
@@ -542,6 +545,9 @@ RPCConsole::~RPCConsole()
542545 settings.setValue (" RPCConsoleWidgetPeersTabSplitterSizes" , ui->splitter ->saveState ());
543546 }
544547
548+ settings.setValue (" PeersTabPeerHeaderState" , m_peer_widget_header_state);
549+ settings.setValue (" PeersTabBanlistHeaderState" , m_banlist_widget_header_state);
550+
545551 m_node.rpcUnsetTimerInterface (rpcTimerInterface);
546552 delete rpcTimerInterface;
547553 delete ui;
@@ -630,9 +636,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
630636 ui->peerWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
631637 ui->peerWidget ->setSelectionMode (QAbstractItemView::ExtendedSelection);
632638 ui->peerWidget ->setContextMenuPolicy (Qt::CustomContextMenu);
633- ui->peerWidget ->setColumnWidth (PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
634- ui->peerWidget ->setColumnWidth (PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
635- ui->peerWidget ->setColumnWidth (PeerTableModel::Ping, PING_COLUMN_WIDTH);
639+
640+ if (!ui->peerWidget ->horizontalHeader ()->restoreState (m_peer_widget_header_state)) {
641+ ui->peerWidget ->setColumnWidth (PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
642+ ui->peerWidget ->setColumnWidth (PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
643+ ui->peerWidget ->setColumnWidth (PeerTableModel::Ping, PING_COLUMN_WIDTH);
644+ }
636645 ui->peerWidget ->horizontalHeader ()->setStretchLastSection (true );
637646
638647 // create peer table context menu
@@ -654,8 +663,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
654663 ui->banlistWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
655664 ui->banlistWidget ->setSelectionMode (QAbstractItemView::SingleSelection);
656665 ui->banlistWidget ->setContextMenuPolicy (Qt::CustomContextMenu);
657- ui->banlistWidget ->setColumnWidth (BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
658- ui->banlistWidget ->setColumnWidth (BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
666+
667+ if (!ui->banlistWidget ->horizontalHeader ()->restoreState (m_banlist_widget_header_state)) {
668+ ui->banlistWidget ->setColumnWidth (BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
669+ ui->banlistWidget ->setColumnWidth (BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
670+ }
659671 ui->banlistWidget ->horizontalHeader ()->setStretchLastSection (true );
660672
661673 // create ban table context menu
@@ -1118,6 +1130,11 @@ void RPCConsole::showEvent(QShowEvent *event)
11181130
11191131void RPCConsole::hideEvent (QHideEvent *event)
11201132{
1133+ // It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1134+ // the columns of QTableView child widgets will have zero width at that moment.
1135+ m_peer_widget_header_state = ui->peerWidget ->horizontalHeader ()->saveState ();
1136+ m_banlist_widget_header_state = ui->banlistWidget ->horizontalHeader ()->saveState ();
1137+
11211138 QWidget::hideEvent (event);
11221139
11231140 if (!clientModel || !clientModel->getPeerTableModel ())
0 commit comments