- if (dynamicItemSize.width() <= 0) {
- const qreal requiredWidth = columnWidthsSum();
- const qreal availableWidth = size().width();
- if (requiredWidth != availableWidth) {
- // Stretch the first role to use the whole remaining width
- firstColumnWidth += availableWidth - requiredWidth;
-
- // 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 (firstColumnWidth < minWidth) {
- firstColumnWidth = minWidth;
- }
-
- m_headerWidget->setColumnWidth(role, firstColumnWidth);
+ qreal requiredWidth = columnWidthsSum();
+ const qreal availableWidth = size().width();
+ if (requiredWidth < availableWidth) {
+ // Stretch the first column to use the whole remaining width
+ firstColumnWidth += availableWidth - requiredWidth;
+ m_headerWidget->setColumnWidth(firstRole, firstColumnWidth);
+ } else if (requiredWidth > availableWidth) {
+ // Shrink the first column to be able to show as much other
+ // columns as possible
+ qreal shrinkedFirstColumnWidth = firstColumnWidth - requiredWidth + availableWidth;
+
+ // 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 (shrinkedFirstColumnWidth < minWidth) {
+ shrinkedFirstColumnWidth = minWidth;