mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
KItemListViewLayouter: handle grid view layouts in RtL properly
This commit is contained in:
parent
f8f97f0593
commit
b81d3fbbbb
|
@ -9,6 +9,9 @@
|
|||
#include "kitemlistsizehintresolver.h"
|
||||
#include "kitemviews/kitemmodelbase.h"
|
||||
|
||||
#include <QGuiApplication>
|
||||
#include <QScopeGuard>
|
||||
|
||||
// #define KITEMLISTVIEWLAYOUTER_DEBUG
|
||||
|
||||
KItemListViewLayouter::KItemListViewLayouter(KItemListSizeHintResolver* sizeHintResolver, QObject* parent) :
|
||||
|
@ -343,7 +346,13 @@ void KItemListViewLayouter::markAsDirty()
|
|||
|
||||
void KItemListViewLayouter::doLayout()
|
||||
{
|
||||
if (m_dirty) {
|
||||
// we always want to update visible indexes after performing a layout
|
||||
auto qsg = qScopeGuard([this] { updateVisibleIndexes(); });
|
||||
|
||||
if (!m_dirty) {
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef KITEMLISTVIEWLAYOUTER_DEBUG
|
||||
QElapsedTimer timer;
|
||||
timer.start();
|
||||
|
@ -392,7 +401,7 @@ void KItemListViewLayouter::doLayout()
|
|||
|
||||
// Calculate the offset of each column, i.e., the x-coordinate where the column starts.
|
||||
m_columnOffsets.resize(m_columnCount);
|
||||
qreal currentOffset = m_xPosInc;
|
||||
qreal currentOffset = QGuiApplication::isRightToLeft() ? widthForColumns : m_xPosInc;
|
||||
|
||||
if (grouped && horizontalScrolling) {
|
||||
// All group headers will always be aligned on the top and not
|
||||
|
@ -400,10 +409,14 @@ void KItemListViewLayouter::doLayout()
|
|||
currentOffset += m_groupHeaderHeight;
|
||||
}
|
||||
|
||||
for (int column = 0; column < m_columnCount; ++column) {
|
||||
if (QGuiApplication::isLeftToRight()) for (int column = 0; column < m_columnCount; ++column) {
|
||||
m_columnOffsets[column] = currentOffset;
|
||||
currentOffset += m_columnWidth;
|
||||
}
|
||||
else for (int column = 0; column < m_columnCount; ++column) {
|
||||
m_columnOffsets[column] = currentOffset - m_columnWidth;
|
||||
currentOffset -= m_columnWidth;
|
||||
}
|
||||
|
||||
// Prepare the QVector which stores the y-coordinate for each new row.
|
||||
int numberOfRows = (itemCount + m_columnCount - 1) / m_columnCount;
|
||||
|
@ -504,9 +517,6 @@ void KItemListViewLayouter::doLayout()
|
|||
qCDebug(DolphinDebug) << "[TIME] doLayout() for " << m_model->count() << "items:" << timer.elapsed();
|
||||
#endif
|
||||
m_dirty = false;
|
||||
}
|
||||
|
||||
updateVisibleIndexes();
|
||||
}
|
||||
|
||||
void KItemListViewLayouter::updateVisibleIndexes()
|
||||
|
|
Loading…
Reference in a new issue