Skip to content

Commit a62fc35

Browse files
committed
Merge bitcoin-core/gui#375: Emit dataChanged signal to dynamically re-sort Peers table
986bf78 qt: Emit dataChanged signal to dynamically re-sort Peers table (Hennadii Stepanov) Pull request description: [By default](https://doc.qt.io/qt-5/qsortfilterproxymodel.html#details), the `PeerTableSortProxy` > dynamically re-sorts ... data whenever the original model changes. That is not the case on master (8cdf917) as in ecbd911 (bitcoin#164) no signals are emitted to notify about model changes. This PR uses a dedicated [`dataChanged`](https://doc.qt.io/qt-5/qabstractitemmodel.html#dataChanged) signal. Fixes bitcoin#367. An alternative to bitcoin#374. ACKs for top commit: jarolrod: ACK 986bf78 Tree-SHA512: dcb92c2f9a2c632880429e9528007db426d2ad938c64dfa1f1538c03e4b62620df52ad7daf33b582976c67b472ff76bc0dae707049f4bbbd4941232cee9ce3d4
2 parents 484d4ee + 986bf78 commit a62fc35

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

src/qt/peertablemodel.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,5 +179,7 @@ void PeerTableModel::refresh()
179179
m_peers_data.swap(new_peers_data);
180180
}
181181

182-
Q_EMIT changed();
182+
const auto top_left = index(0, 0);
183+
const auto bottom_right = index(rowCount() - 1, columnCount() - 1);
184+
Q_EMIT dataChanged(top_left, bottom_right);
183185
}

src/qt/peertablemodel.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,6 @@ class PeerTableModel : public QAbstractTableModel
7373
public Q_SLOTS:
7474
void refresh();
7575

76-
Q_SIGNALS:
77-
void changed();
78-
7976
private:
8077
//! Internal peer data structure.
8178
QList<CNodeCombinedStats> m_peers_data{};

src/qt/rpcconsole.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#endif
3636

3737
#include <QAbstractButton>
38+
#include <QAbstractItemModel>
3839
#include <QDateTime>
3940
#include <QFont>
4041
#include <QKeyEvent>
@@ -686,7 +687,7 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
686687

687688
// peer table signal handling - update peer details when selecting new node
688689
connect(ui->peerWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this, &RPCConsole::updateDetailWidget);
689-
connect(model->getPeerTableModel(), &PeerTableModel::changed, this, &RPCConsole::updateDetailWidget);
690+
connect(model->getPeerTableModel(), &QAbstractItemModel::dataChanged, [this] { updateDetailWidget(); });
690691

691692
// set up ban table
692693
ui->banlistWidget->setModel(model->getBanTableModel());

0 commit comments

Comments
 (0)