if (role == "name") {
// Increase the width by the expansion-toggle and the current expansion level
const int expandedParentsCount = values.value("expandedParentsCount", 0).toInt();
- width += option.padding + expandedParentsCount * itemSize().height() + KIconLoader::SizeSmall;
+ width += option.padding + (expandedParentsCount + 1) * itemSize().height() + KIconLoader::SizeSmall;
// Increase the width by the required space for the icon
width += option.padding * 2 + option.iconSize;
void setVisibleRoles(const QList<QByteArray>& roles);
QList<QByteArray> visibleRoles() const;
- void setVisibleRolesWidths(const QHash<QByteArray, qreal> rolesWidths);
+ void setVisibleRolesWidths(const QHash<QByteArray, qreal>& rolesWidths);
QHash<QByteArray, qreal> visibleRolesWidths() const;
qreal minimumRoleWidth() const;
// Calculate the maximum size of an item by considering the
// visible role sizes and apply them to the layouter. If the
- // size does not use the available view-size it the size of the
+ // size does not use the available view-size the size of the
// first role will get stretched.
m_stretchedVisibleRolesSizes = m_visibleRolesSizes;
const QByteArray role = m_visibleRoles.first();
if (dynamicItemSize.width() <= 0) {
const qreal requiredWidth = visibleRolesSizesWidthSum();
const qreal availableWidth = size().width();
- if (requiredWidth < availableWidth) {
- // Stretch the first role to use the whole width for the item
+ if (requiredWidth != availableWidth) {
+ // Stretch the first role to use the whole remaining width
firstRoleSize.rwidth() += availableWidth - requiredWidth;
- m_stretchedVisibleRolesSizes.insert(role, firstRoleSize);
- }
- dynamicItemSize.setWidth(qMax(requiredWidth, availableWidth));
- }
- if (dynamicItemSize.height() <= 0) {
- const qreal requiredHeight = visibleRolesSizesHeightSum();
- const qreal availableHeight = size().height();
- if (requiredHeight < availableHeight) {
- // Stretch the first role to use the whole height for the item
- firstRoleSize.rheight() += availableHeight - requiredHeight;
+ // TODO: A proper calculation of the minimum width depends on the implementation
+ // of KItemListWidget. Probably a kind of minimum size-hint should be introduced
+ // later.
+ const qreal minWidth = m_styleOption.iconSize * 2 + 200;
+ if (firstRoleSize.width() < minWidth) {
+ firstRoleSize.rwidth() = minWidth;
+ }
m_stretchedVisibleRolesSizes.insert(role, firstRoleSize);
}
- dynamicItemSize.setHeight(qMax(requiredHeight, availableHeight));
+ dynamicItemSize.rwidth() = qMax(requiredWidth, availableWidth);
}
+ // TODO: A dynamic item height (dynamicItemSize.height() <= 0)
+ // is not handled currently
+
m_layouter->setItemSize(dynamicItemSize);
if (m_header) {