X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/65846125d7f4dd90acd69abf73161607ba76cc8b..40cc5f665d:/src/kitemviews/private/kitemlistheaderwidget.cpp diff --git a/src/kitemviews/private/kitemlistheaderwidget.cpp b/src/kitemviews/private/kitemlistheaderwidget.cpp index 5fb929e52..9f4f868d0 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.cpp +++ b/src/kitemviews/private/kitemlistheaderwidget.cpp @@ -18,7 +18,7 @@ KItemListHeaderWidget::KItemListHeaderWidget(QGraphicsWidget* parent) : m_automaticColumnResizing(true), m_model(nullptr), m_offset(0), - m_leadingPadding(0), + m_sidePadding(0), m_columns(), m_columnWidths(), m_preferredColumnWidths(), @@ -33,6 +33,8 @@ KItemListHeaderWidget::KItemListHeaderWidget(QGraphicsWidget* parent) : m_movingRole.index = -1; setAcceptHoverEvents(true); + // TODO update when font changes at runtime + setFont(QApplication::font("QHeaderView")); } KItemListHeaderWidget::~KItemListHeaderWidget() @@ -135,18 +137,18 @@ qreal KItemListHeaderWidget::offset() const return m_offset; } -void KItemListHeaderWidget::setLeadingPadding(qreal width) +void KItemListHeaderWidget::setSidePadding(qreal width) { - if (m_leadingPadding != width) { - m_leadingPadding = width; - leadingPaddingChanged(width); + if (m_sidePadding != width) { + m_sidePadding = width; + sidePaddingChanged(width); update(); } } -qreal KItemListHeaderWidget::leadingPadding() const +qreal KItemListHeaderWidget::sidePadding() const { - return m_leadingPadding; + return m_sidePadding; } qreal KItemListHeaderWidget::minimumColumnWidth() const @@ -168,7 +170,7 @@ void KItemListHeaderWidget::paint(QPainter* painter, const QStyleOptionGraphicsI painter->setFont(font()); painter->setPen(palette().text().color()); - qreal x = -m_offset + m_leadingPadding; + qreal x = -m_offset + m_sidePadding; int orderIndex = 0; for (const QByteArray& role : qAsConst(m_columns)) { const qreal roleWidth = m_columnWidths.value(role); @@ -189,7 +191,7 @@ void KItemListHeaderWidget::mousePressEvent(QGraphicsSceneMouseEvent* event) if (event->button() & Qt::LeftButton) { m_pressedMousePos = event->pos(); if (isAbovePaddingGrip(m_pressedMousePos, PaddingGrip::Leading)) { - m_roleOperation = ResizeLeadingColumnOperation; + m_roleOperation = ResizePaddingColumnOperation; } else { updatePressedRoleIndex(event->pos()); m_roleOperation = isAboveRoleGrip(m_pressedMousePos, m_pressedRoleIndex) ? @@ -282,7 +284,7 @@ void KItemListHeaderWidget::mouseMoveEvent(QGraphicsSceneMouseEvent* event) } else { m_movingRole.pixmap = createRolePixmap(roleIndex); - qreal roleX = -m_offset + m_leadingPadding; + qreal roleX = -m_offset + m_sidePadding; for (int i = 0; i < roleIndex; ++i) { const QByteArray role = m_columns[i]; roleX += m_columnWidths.value(role); @@ -310,16 +312,16 @@ void KItemListHeaderWidget::mouseMoveEvent(QGraphicsSceneMouseEvent* event) break; } - case ResizeLeadingColumnOperation: { - qreal currentWidth = m_leadingPadding; + case ResizePaddingColumnOperation: { + qreal currentWidth = m_sidePadding; currentWidth += event->pos().x() - event->lastPos().x(); currentWidth = qMax(0.0, currentWidth); - m_leadingPadding = currentWidth; + m_sidePadding = currentWidth; update(); - Q_EMIT leadingPaddingChanged(currentWidth); + Q_EMIT sidePaddingChanged(currentWidth); break; } @@ -417,12 +419,14 @@ void KItemListHeaderWidget::paintRole(QPainter* painter, int orderIndex, QWidget* widget) const { + const auto direction = widget ? widget->layoutDirection() : qApp->layoutDirection(); + // The following code is based on the code from QHeaderView::paintSection(). // SPDX-FileCopyrightText: 2011 Nokia Corporation and/or its subsidiary(-ies). QStyleOptionHeader option; - option.direction = widget->layoutDirection(); + option.direction = direction; option.textAlignment = - widget->layoutDirection() == Qt::LeftToRight + direction == Qt::LeftToRight ? Qt::AlignLeft : Qt::AlignRight; @@ -510,7 +514,7 @@ int KItemListHeaderWidget::roleIndexAt(const QPointF& pos) const { int index = -1; - qreal x = -m_offset + m_leadingPadding; + qreal x = -m_offset + m_sidePadding; for (const QByteArray& role : qAsConst(m_columns)) { ++index; x += m_columnWidths.value(role); @@ -524,7 +528,7 @@ int KItemListHeaderWidget::roleIndexAt(const QPointF& pos) const bool KItemListHeaderWidget::isAboveRoleGrip(const QPointF& pos, int roleIndex) const { - qreal x = -m_offset + m_leadingPadding; + qreal x = -m_offset + m_sidePadding; for (int i = 0; i <= roleIndex; ++i) { const QByteArray role = m_columns[i]; x += m_columnWidths.value(role); @@ -536,7 +540,7 @@ bool KItemListHeaderWidget::isAboveRoleGrip(const QPointF& pos, int roleIndex) c bool KItemListHeaderWidget::isAbovePaddingGrip(const QPointF& pos, PaddingGrip paddingGrip) const { - const qreal lx = -m_offset + m_leadingPadding; + const qreal lx = -m_offset + m_sidePadding; const int grip = style()->pixelMetric(QStyle::PM_HeaderGripMargin); switch (paddingGrip) { @@ -586,7 +590,7 @@ int KItemListHeaderWidget::targetOfMovingRole() const const int movingRight = movingLeft + movingWidth - 1; int targetIndex = 0; - qreal targetLeft = -m_offset + m_leadingPadding; + qreal targetLeft = -m_offset + m_sidePadding; while (targetIndex < m_columns.count()) { const QByteArray role = m_columns[targetIndex]; const qreal targetWidth = m_columnWidths.value(role); @@ -612,7 +616,7 @@ int KItemListHeaderWidget::targetOfMovingRole() const qreal KItemListHeaderWidget::roleXPosition(const QByteArray& role) const { - qreal x = -m_offset + m_leadingPadding; + qreal x = -m_offset + m_sidePadding; for (const QByteArray& visibleRole : qAsConst(m_columns)) { if (visibleRole == role) { return x;