diff --git a/containments/desktop/package/contents/ui/FolderView.qml b/containments/desktop/package/contents/ui/FolderView.qml --- a/containments/desktop/package/contents/ui/FolderView.qml +++ b/containments/desktop/package/contents/ui/FolderView.qml @@ -484,6 +484,9 @@ focus: true + property int viewportWidth: viewport ? Math.ceil(viewport.width) : 0 + property int viewportHeight: viewport ? Math.ceil(viewport.height) : 0 + GridView { id: gridView @@ -512,23 +515,38 @@ keyNavigationWraps: false boundsBehavior: Flickable.StopAtBounds + function calcExtraSpacing(cellSize, containerSize) { + var availableColumns = Math.floor(containerSize / cellSize) + var allColumnSize = availableColumns * cellSize + var extraSpace, extraSpacing + if (allColumnSize > 0) { + extraSpace = Math.max(containerSize - allColumnSize) + extraSpacing = extraSpace / availableColumns + } else { + extraSpace = 0 + extraSpacing = 0 + } + return extraSpacing + } + + property int iconWidth: iconSize + (2 * units.largeSpacing) + (2 * units.smallSpacing) + property real extraWidth: calcExtraSpacing(iconWidth, scrollArea.viewportWidth) cellWidth: { if (root.useListViewMode) { return gridView.width; } - - return iconSize + (2 * units.largeSpacing) + (2 * units.smallSpacing); + return iconWidth + extraWidth } + property int iconHeight: (iconSize + (theme.mSize(theme.defaultFont).height * plasmoid.configuration.textLines) + (6 * units.smallSpacing)) + property real extraHeight: calcExtraSpacing(iconHeight, scrollArea.viewportHeight) cellHeight: { if (root.useListViewMode) { return Math.ceil((Math.max(theme.mSize(theme.defaultFont).height, iconSize) + Math.max(highlightItemSvg.margins.top + highlightItemSvg.margins.bottom, listItemSvg.margins.top + listItemSvg.margins.bottom)) / 2) * 2; } - - return (iconSize + (theme.mSize(theme.defaultFont).height * plasmoid.configuration.textLines) - + (6 * units.smallSpacing)); + return iconHeight + extraHeight } delegate: FolderItemDelegate {