X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/240d33ce17fc531e8bc6638af8f71454fe7c05e6..refs/heads/master:/src/kitemviews/private/kitemlistviewlayouter.cpp diff --git a/src/kitemviews/private/kitemlistviewlayouter.cpp b/src/kitemviews/private/kitemlistviewlayouter.cpp index a2d92f0de..3ed2343a8 100644 --- a/src/kitemviews/private/kitemlistviewlayouter.cpp +++ b/src/kitemviews/private/kitemlistviewlayouter.cpp @@ -40,6 +40,7 @@ KItemListViewLayouter::KItemListViewLayouter(KItemListSizeHintResolver *sizeHint , m_groupHeaderHeight(0) , m_groupHeaderMargin(0) , m_itemInfos() + , m_statusBarOffset(0) { Q_ASSERT(m_sizeHintResolver); } @@ -228,7 +229,7 @@ QRectF KItemListViewLayouter::itemRect(int index) const QPointF pos(y, x); sizeHint.transpose(); if (QGuiApplication::isRightToLeft()) { - pos.rx() = m_size.width() + m_scrollOffset - pos.x() - sizeHint.width(); + pos.rx() = m_size.width() - 1 + m_scrollOffset - pos.x() - sizeHint.width(); } else { pos.rx() -= m_scrollOffset; } @@ -260,7 +261,6 @@ QRectF KItemListViewLayouter::groupHeaderRect(int index) const pos.ry() -= m_groupHeaderHeight; size = QSizeF(m_size.width(), m_groupHeaderHeight); } else { - pos.rx() -= m_itemMargin.width(); pos.ry() = 0; // Determine the maximum width used in the current column. As the @@ -286,7 +286,14 @@ QRectF KItemListViewLayouter::groupHeaderRect(int index) const } size = QSizeF(headerWidth, m_size.height()); + + if (QGuiApplication::isRightToLeft()) { + pos.setX(firstItemRect.right() + m_itemMargin.width() - size.width()); + } else { + pos.rx() -= m_itemMargin.width(); + } } + return QRectF(pos, size); } @@ -335,6 +342,13 @@ void KItemListViewLayouter::markAsDirty() m_dirty = true; } +void KItemListViewLayouter::setStatusBarOffset(int offset) +{ + if (m_statusBarOffset != offset) { + m_statusBarOffset = offset; + } +} + #ifndef QT_NO_DEBUG bool KItemListViewLayouter::isDirty() { @@ -372,6 +386,7 @@ void KItemListViewLayouter::doLayout() itemSize.transpose(); itemMargin.transpose(); size.transpose(); + size.rwidth() -= m_statusBarOffset; if (grouped) { // In the horizontal scrolling case all groups are aligned @@ -402,7 +417,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 = isRightToLeft ? widthForColumns : m_xPosInc; + qreal currentOffset = isRightToLeft && !horizontalScrolling ? widthForColumns : m_xPosInc; if (grouped && horizontalScrolling) { // All group headers will always be aligned on the top and not @@ -413,7 +428,7 @@ void KItemListViewLayouter::doLayout() if (isRightToLeft) { for (int column = 0; column < m_columnCount; ++column) { if (horizontalScrolling) { - m_columnOffsets[column] = column * m_columnWidth; + m_columnOffsets[column] = currentOffset + column * m_columnWidth; } else { currentOffset -= m_columnWidth; m_columnOffsets[column] = currentOffset;