┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Blackquill <[email protected]>2022-01-21 18:42:20 -0500
committerJanet Blackquill <[email protected]>2022-01-25 23:49:03 +0000
commit65846125d7f4dd90acd69abf73161607ba76cc8b (patch)
tree4cdcbc8fbcade5f97139d7c540d34e47fad0eaba /src
parentd71b617205ce152dedc5d3a5b5b801697741f8eb (diff)
Make group headers mirror rtl
Diffstat (limited to 'src')
-rw-r--r--src/kitemviews/kitemlistgroupheader.cpp10
-rw-r--r--src/kitemviews/kitemlistgroupheader.h1
-rw-r--r--src/kitemviews/kstandarditemlistgroupheader.cpp17
-rw-r--r--src/kitemviews/kstandarditemlistgroupheader.h2
-rw-r--r--src/kitemviews/private/kitemlistheaderwidget.cpp6
5 files changed, 27 insertions, 9 deletions
diff --git a/src/kitemviews/kitemlistgroupheader.cpp b/src/kitemviews/kitemlistgroupheader.cpp
index 80dd94149..f0ff52503 100644
--- a/src/kitemviews/kitemlistgroupheader.cpp
+++ b/src/kitemviews/kitemlistgroupheader.cpp
@@ -161,6 +161,7 @@ void KItemListGroupHeader::resizeEvent(QGraphicsSceneResizeEvent* event)
if (event->oldSize().height() != event->newSize().height()) {
m_dirtyCache = true;
}
+ updateSize();
}
void KItemListGroupHeader::updateCache()
@@ -174,6 +175,13 @@ void KItemListGroupHeader::updateCache()
m_separatorColor = mixedColor(c1, c2, 10);
m_roleColor = mixedColor(c1, c2, 60);
+ updateSize();
+
+ m_dirtyCache = false;
+}
+
+void KItemListGroupHeader::updateSize()
+{
const int padding = qMax(1, m_styleOption.padding);
const int horizontalMargin = qMax(2, m_styleOption.horizontalMargin);
@@ -187,7 +195,7 @@ void KItemListGroupHeader::updateCache()
size().width() - 2 * padding - horizontalMargin,
roleHeight);
- m_dirtyCache = false;
+ update();
}
QColor KItemListGroupHeader::mixedColor(const QColor& c1, const QColor& c2, int c1Percent)
diff --git a/src/kitemviews/kitemlistgroupheader.h b/src/kitemviews/kitemlistgroupheader.h
index 4ba469056..48af1e9e0 100644
--- a/src/kitemviews/kitemlistgroupheader.h
+++ b/src/kitemviews/kitemlistgroupheader.h
@@ -94,6 +94,7 @@ protected:
private:
void updateCache();
+ void updateSize();
static QColor mixedColor(const QColor& c1, const QColor& c2, int c1Percent = 50);
diff --git a/src/kitemviews/kstandarditemlistgroupheader.cpp b/src/kitemviews/kstandarditemlistgroupheader.cpp
index 22eefe5ea..28497ddfc 100644
--- a/src/kitemviews/kstandarditemlistgroupheader.cpp
+++ b/src/kitemviews/kstandarditemlistgroupheader.cpp
@@ -17,8 +17,7 @@ KStandardItemListGroupHeader::KStandardItemListGroupHeader(QGraphicsWidget* pare
m_text(),
m_pixmap()
{
- m_text.setTextFormat(Qt::PlainText);
- m_text.setPerformanceHint(QStaticText::AggressiveCaching);
+
}
KStandardItemListGroupHeader::~KStandardItemListGroupHeader()
@@ -37,7 +36,7 @@ void KStandardItemListGroupHeader::paintRole(QPainter* painter, const QRectF& ro
{
if (m_pixmap.isNull()) {
painter->setPen(color);
- painter->drawStaticText(roleBounds.topLeft(), m_text);
+ painter->drawText(roleBounds, 0, m_text);
} else {
painter->drawPixmap(roleBounds.topLeft(), m_pixmap);
}
@@ -55,7 +54,11 @@ void KStandardItemListGroupHeader::paintSeparator(QPainter* painter, const QColo
if (scrollOrientation() == Qt::Horizontal) {
painter->drawLine(0, 0, 0, size().height() - 1);
} else {
- painter->drawLine(0, 0, size().width() - 1, 0);
+ if (layoutDirection() == Qt::LeftToRight) {
+ painter->drawLine(0, 0, size().width() - 1, 0);
+ } else {
+ painter->drawLine(1, 0, size().width(), 0);
+ }
}
}
@@ -75,7 +78,7 @@ void KStandardItemListGroupHeader::dataChanged(const QVariant& current, const QV
void KStandardItemListGroupHeader::resizeEvent(QGraphicsSceneResizeEvent* event)
{
- QGraphicsWidget::resizeEvent(event);
+ KItemListGroupHeader::resizeEvent(event);
m_dirtyCache = true;
}
@@ -87,7 +90,7 @@ void KStandardItemListGroupHeader::updateCache()
const qreal maxWidth = size().width() - 4 * styleOption().padding;
if (role() == "rating") {
- m_text.setText(QString());
+ m_text = QString();
const qreal height = styleOption().fontMetrics.ascent();
const QSizeF pixmapSize(qMin(height * 5, maxWidth), height);
@@ -104,7 +107,7 @@ void KStandardItemListGroupHeader::updateCache()
QFontMetricsF fontMetrics(font());
const QString text = fontMetrics.elidedText(data().toString(), Qt::ElideRight, maxWidth);
- m_text.setText(text);
+ m_text = text;
}
}
diff --git a/src/kitemviews/kstandarditemlistgroupheader.h b/src/kitemviews/kstandarditemlistgroupheader.h
index ff428c4ea..965bf995c 100644
--- a/src/kitemviews/kstandarditemlistgroupheader.h
+++ b/src/kitemviews/kstandarditemlistgroupheader.h
@@ -35,7 +35,7 @@ private:
private:
bool m_dirtyCache;
- QStaticText m_text;
+ QString m_text;
QPixmap m_pixmap;
};
#endif
diff --git a/src/kitemviews/private/kitemlistheaderwidget.cpp b/src/kitemviews/private/kitemlistheaderwidget.cpp
index 8b39c25fe..5fb929e52 100644
--- a/src/kitemviews/private/kitemlistheaderwidget.cpp
+++ b/src/kitemviews/private/kitemlistheaderwidget.cpp
@@ -420,6 +420,12 @@ void KItemListHeaderWidget::paintRole(QPainter* painter,
// 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.textAlignment =
+ widget->layoutDirection() == Qt::LeftToRight
+ ? Qt::AlignLeft
+ : Qt::AlignRight;
+
option.section = orderIndex;
option.state = QStyle::State_None | QStyle::State_Raised | QStyle::State_Horizontal;
if (isEnabled()) {