diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 07144aa1c6..ea8883e6ce 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -26,9 +26,11 @@ #include #include #include +#include #include #include #include +#include #include #include #include @@ -37,6 +39,37 @@ #include #include +class TransactionRecordDelegate : public QItemDelegate +{ + QSortFilterProxyModel* m_proxy; + + void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const + { + bool alternate = false; + QVariant previous_hash; + + for (int row = 0; row <= index.row(); ++row) { + QModelIndex sibling = m_proxy->mapToSource(index.sibling(row, 0)); + QVariant hash = sibling.data(TransactionTableModel::TxHashRole); + if (row == 0) { + previous_hash = hash; + } else if (hash != previous_hash) { + alternate = !alternate; + previous_hash = hash; + } + } + + if (alternate) { + painter->fillRect(option.rect, option.palette.alternateBase()); + } + + QItemDelegate::paint(painter, option, index); + } + +public: + TransactionRecordDelegate(QSortFilterProxyModel* proxy) : m_proxy(proxy) {} +}; + TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *parent) : QWidget(parent), model(0), transactionProxyModel(0), transactionView(0), abandonAction(0), bumpFeeAction(0), columnResizingFixer(0) @@ -223,7 +256,7 @@ void TransactionView::setModel(WalletModel *_model) transactionView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); transactionView->setModel(transactionProxyModel); - transactionView->setAlternatingRowColors(true); + transactionView->setItemDelegate(new TransactionRecordDelegate(transactionProxyModel)); transactionView->setSelectionBehavior(QAbstractItemView::SelectRows); transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection); transactionView->setSortingEnabled(true);