, m_columns()
, m_columnWidths()
, m_preferredColumnWidths()
- , m_hoveredRoleIndex(-1)
+ , m_hoveredIndex(-1)
, m_pressedRoleIndex(-1)
, m_roleOperation(NoRoleOperation)
, m_pressedMousePos()
{
if (m_sidePadding != width) {
m_sidePadding = width;
- sidePaddingChanged(width);
+ Q_EMIT sidePaddingChanged(width);
update();
}
}
qreal x = -m_offset + m_sidePadding;
int orderIndex = 0;
- for (const QByteArray &role : qAsConst(m_columns)) {
+ for (const QByteArray &role : std::as_const(m_columns)) {
const qreal roleWidth = m_columnWidths.value(role);
const QRectF rect(x, 0, roleWidth, size().height());
paintRole(painter, role, rect, orderIndex, widget);
void KItemListHeaderWidget::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
QGraphicsWidget::hoverEnterEvent(event);
- updateHoveredRoleIndex(event->pos());
+ updateHoveredIndex(event->pos());
}
void KItemListHeaderWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
QGraphicsWidget::hoverLeaveEvent(event);
- if (m_hoveredRoleIndex != -1) {
- m_hoveredRoleIndex = -1;
+ if (m_hoveredIndex != -1) {
+ Q_EMIT columnUnHovered(m_hoveredIndex);
+ m_hoveredIndex = -1;
update();
}
}
QGraphicsWidget::hoverMoveEvent(event);
const QPointF &pos = event->pos();
- updateHoveredRoleIndex(pos);
- if ((m_hoveredRoleIndex >= 0 && isAboveRoleGrip(pos, m_hoveredRoleIndex)) || isAbovePaddingGrip(pos, PaddingGrip::Leading)
+ updateHoveredIndex(pos);
+ if ((m_hoveredIndex >= 0 && isAboveRoleGrip(pos, m_hoveredIndex)) || isAbovePaddingGrip(pos, PaddingGrip::Leading)
|| isAbovePaddingGrip(pos, PaddingGrip::Trailing)) {
setCursor(Qt::SplitHCursor);
} else {
if (window() && window()->isActiveWindow()) {
option.state |= QStyle::State_Active;
}
- if (m_hoveredRoleIndex == orderIndex) {
+ if (m_hoveredIndex == orderIndex) {
option.state |= QStyle::State_MouseOver;
}
if (m_pressedRoleIndex == orderIndex) {
}
}
-void KItemListHeaderWidget::updateHoveredRoleIndex(const QPointF &pos)
+void KItemListHeaderWidget::updateHoveredIndex(const QPointF &pos)
{
const int hoverIndex = roleIndexAt(pos);
- if (m_hoveredRoleIndex != hoverIndex) {
- m_hoveredRoleIndex = hoverIndex;
+
+ if (m_hoveredIndex != hoverIndex) {
+ if (m_hoveredIndex != -1) {
+ Q_EMIT columnUnHovered(m_hoveredIndex);
+ }
+ m_hoveredIndex = hoverIndex;
+ if (m_hoveredIndex != -1) {
+ Q_EMIT columnHovered(m_hoveredIndex);
+ }
update();
}
}
int index = -1;
qreal x = -m_offset + m_sidePadding;
- for (const QByteArray &role : qAsConst(m_columns)) {
+ for (const QByteArray &role : std::as_const(m_columns)) {
++index;
x += m_columnWidths.value(role);
if (pos.x() <= x) {
return pos.x() >= (lx - grip) && pos.x() <= lx;
case Trailing: {
qreal rx = lx;
- for (const QByteArray &role : qAsConst(m_columns)) {
+ for (const QByteArray &role : std::as_const(m_columns)) {
rx += m_columnWidths.value(role);
}
return pos.x() >= (rx - grip) && pos.x() <= rx;
qreal KItemListHeaderWidget::roleXPosition(const QByteArray &role) const
{
qreal x = -m_offset + m_sidePadding;
- for (const QByteArray &visibleRole : qAsConst(m_columns)) {
+ for (const QByteArray &visibleRole : std::as_const(m_columns)) {
if (visibleRole == role) {
return x;
}
return -1;
}
+
+#include "moc_kitemlistheaderwidget.cpp"