From da7ccef4886df64913b8a6a4bc14cfdb06067325 Mon Sep 17 00:00:00 2001 From: Méven Car Date: Tue, 14 Feb 2023 18:19:15 +0100 Subject: DolphinView: Allow to have tootips on columns headers Add events columnHovered/columnUnHovered to KItemListview and KItemListHeaderWidget. --- src/kitemviews/kitemlistview.cpp | 4 ++++ src/kitemviews/kitemlistview.h | 3 +++ src/kitemviews/private/kitemlistheaderwidget.cpp | 8 ++++++++ src/kitemviews/private/kitemlistheaderwidget.h | 6 +++++- 4 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/kitemviews') diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index d9455ce9e..7f1347920 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -601,6 +601,8 @@ void KItemListView::setHeaderVisible(bool visible) connect(m_headerWidget, &KItemListHeaderWidget::columnMoved, this, &KItemListView::slotHeaderColumnMoved); connect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged, this, &KItemListView::sortOrderChanged); connect(m_headerWidget, &KItemListHeaderWidget::sortRoleChanged, this, &KItemListView::sortRoleChanged); + connect(m_headerWidget, &KItemListHeaderWidget::columnHovered, this, &KItemListView::columnHovered); + connect(m_headerWidget, &KItemListHeaderWidget::columnUnHovered, this, &KItemListView::columnUnHovered); m_layouter->setHeaderHeight(headerSize.height()); m_headerWidget->setVisible(true); @@ -610,6 +612,8 @@ void KItemListView::setHeaderVisible(bool visible) disconnect(m_headerWidget, &KItemListHeaderWidget::columnMoved, this, &KItemListView::slotHeaderColumnMoved); disconnect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged, this, &KItemListView::sortOrderChanged); disconnect(m_headerWidget, &KItemListHeaderWidget::sortRoleChanged, this, &KItemListView::sortRoleChanged); + disconnect(m_headerWidget, &KItemListHeaderWidget::columnHovered, this, &KItemListView::columnHovered); + disconnect(m_headerWidget, &KItemListHeaderWidget::columnUnHovered, this, &KItemListView::columnUnHovered); m_layouter->setHeaderHeight(0); m_headerWidget->setVisible(false); diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index e9b4a62dd..6c3d3648d 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -327,6 +327,9 @@ Q_SIGNALS: */ void scrollingStopped(); + void columnHovered(int roleIndex); + void columnUnHovered(int roleIndex); + protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; void setItemSize(const QSizeF &size); diff --git a/src/kitemviews/private/kitemlistheaderwidget.cpp b/src/kitemviews/private/kitemlistheaderwidget.cpp index ac25d189c..d23b7def9 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.cpp +++ b/src/kitemviews/private/kitemlistheaderwidget.cpp @@ -372,6 +372,7 @@ void KItemListHeaderWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { QGraphicsWidget::hoverLeaveEvent(event); if (m_hoveredRoleIndex != -1) { + Q_EMIT columnUnHovered(m_hoveredRoleIndex); m_hoveredRoleIndex = -1; update(); } @@ -488,8 +489,15 @@ void KItemListHeaderWidget::updatePressedRoleIndex(const QPointF &pos) void KItemListHeaderWidget::updateHoveredRoleIndex(const QPointF &pos) { const int hoverIndex = roleIndexAt(pos); + if (m_hoveredRoleIndex != hoverIndex) { + if (m_hoveredRoleIndex != -1) { + Q_EMIT columnUnHovered(m_hoveredRoleIndex); + } m_hoveredRoleIndex = hoverIndex; + if (m_hoveredRoleIndex != -1) { + Q_EMIT columnHovered(m_hoveredRoleIndex); + } update(); } } diff --git a/src/kitemviews/private/kitemlistheaderwidget.h b/src/kitemviews/private/kitemlistheaderwidget.h index 58c27b43a..05a5924e1 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.h +++ b/src/kitemviews/private/kitemlistheaderwidget.h @@ -93,6 +93,9 @@ Q_SIGNALS: */ void sortRoleChanged(const QByteArray ¤t, const QByteArray &previous); + void columnUnHovered(int roleIndex); + void columnHovered(int roleIndex); + protected: void mousePressEvent(QGraphicsSceneMouseEvent *event) override; void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; @@ -158,7 +161,8 @@ private: int x; int xDec; int index; - } m_movingRole; + }; + MovingRole m_movingRole; }; #endif -- cgit v1.3