From 74508f6ade9fc9d36366c9610493300241603734 Mon Sep 17 00:00:00 2001 From: /dev/fd0 Date: Sat, 18 Oct 2025 00:56:26 +0530 Subject: [PATCH] qt: enable copying txid by clicking bubbles in block view --- src/qt/blockview.cpp | 24 ++++++++++++++++++++++++ src/qt/blockview.h | 1 + 2 files changed, 25 insertions(+) diff --git a/src/qt/blockview.cpp b/src/qt/blockview.cpp index 3b796f6cc22b4..5a7828cef1442 100644 --- a/src/qt/blockview.cpp +++ b/src/qt/blockview.cpp @@ -26,6 +26,8 @@ #include #include +#include +#include #include #include #include @@ -105,6 +107,28 @@ bool ScalingGraphicsView::viewportEvent(QEvent * const event) return QGraphicsView::viewportEvent(event); } +void ScalingGraphicsView::mousePressEvent(QMouseEvent * const event) +{ + if (event->button() == Qt::LeftButton) { + auto * const gi = itemAt(event->pos()); + const auto tx = gi ? gi->data(0).value() : CTransactionRef(); + if (tx) { + QString txid = QString::fromStdString(tx->GetHash().ToString()); + QApplication::clipboard()->setText(txid); + + #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) + const QPoint event_global_pos = event->globalPosition().toPoint(); + #else + const QPoint event_global_pos = event->globalPos(); + #endif + QToolTip::showText(event_global_pos, tr("Copied: %1").arg(txid), this, {}, -1); + + return; + } + } + QGraphicsView::mousePressEvent(event); +} + class BlockViewValidationInterface final : public CValidationInterface { private: diff --git a/src/qt/blockview.h b/src/qt/blockview.h index a5337014519d1..3e3ca5d891c1b 100644 --- a/src/qt/blockview.h +++ b/src/qt/blockview.h @@ -50,6 +50,7 @@ class ScalingGraphicsView : public QGraphicsView void mouseMoveEvent(QMouseEvent *event) override; void resizeEvent(QResizeEvent *event) override; bool viewportEvent(QEvent *event) override; + void mousePressEvent(QMouseEvent *event) override; GuiBlockView *m_bv; };