- m_pixmapPos.setX(textInfo->pos.x() - 2.0 * padding
- - (scaledIconSize + m_scaledPixmapSize.width()) / 2.0);
+ const auto width = (scaledIconSize + m_scaledPixmapSize.width()) / 2.0;
+ const auto iPadding = 2.0 * padding;
+ const auto x = textInfo->pos.x();
+
+ const QHash<QByteArray, QVariant> values = data();
+ const int expandedParentsCount = values.value("expandedParentsCount", 0).toInt();
+ const int expansionOffset =
+ (m_layout == DetailsLayout) ?
+ size().height() + size().height() * expandedParentsCount :
+ 0;
+
+ m_pixmapPos.setX(layoutDirection() == Qt::LeftToRight
+ ? x - iPadding - width
+ : size().width() - iPadding - width - expansionOffset);