m_visibleItems(),
m_visibleGroups(),
m_visibleCells(),
- m_sizeHintResolver(nullptr),
m_layouter(nullptr),
m_animation(nullptr),
m_oldScrollOffset(0),
m_header(nullptr),
m_headerWidget(nullptr),
m_indicatorAnimation(nullptr),
- m_dropIndicator()
+ m_dropIndicator(),
+ m_sizeHintResolver(nullptr)
{
setAcceptHoverEvents(true);
setAcceptTouchEvents(true);
connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged,
this, &KItemListView::slotHeaderColumnWidthChanged);
- connect(m_headerWidget, &KItemListHeaderWidget::leadingPaddingChanged,
- this, &KItemListView::slotLeadingPaddingChanged);
+ connect(m_headerWidget, &KItemListHeaderWidget::sidePaddingChanged,
+ this, &KItemListView::slotSidePaddingChanged);
connect(m_headerWidget, &KItemListHeaderWidget::columnMoved,
this, &KItemListView::slotHeaderColumnMoved);
connect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged,
} else if (!visible && m_headerWidget->isVisible()) {
disconnect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged,
this, &KItemListView::slotHeaderColumnWidthChanged);
- disconnect(m_headerWidget, &KItemListHeaderWidget::leadingPaddingChanged,
- this, &KItemListView::slotLeadingPaddingChanged);
+ disconnect(m_headerWidget, &KItemListHeaderWidget::sidePaddingChanged,
+ this, &KItemListView::slotSidePaddingChanged);
disconnect(m_headerWidget, &KItemListHeaderWidget::columnMoved,
this, &KItemListView::slotHeaderColumnMoved);
disconnect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged,
doLayout(NoAnimation);
}
-void KItemListView::slotLeadingPaddingChanged(qreal width)
+void KItemListView::slotSidePaddingChanged(qreal width)
{
Q_UNUSED(width)
if (m_headerWidget->automaticColumnResizing()) {
Q_ASSERT(widget->index() == i);
widget->setVisible(true);
+ bool animateIconResizing = animate;
+
if (widget->size() != itemBounds.size()) {
// Resize the widget for the item to the changed size.
if (animate) {
} else {
widget->resize(itemBounds.size());
}
+ } else {
+ animateIconResizing = false;
}
const int newIconSize = widget->styleOption().iconSize;
if (widget->iconSize() != newIconSize) {
- if (animate) {
+ if (animateIconResizing) {
m_animation->start(widget, KItemListViewAnimation::IconResizeAnimation, newIconSize);
} else {
widget->setIconSize(newIconSize);
void KItemListView::applyColumnWidthsFromHeader()
{
// Apply the new size to the layouter
- const qreal requiredWidth = columnWidthsSum() + m_headerWidget->leadingPadding();
+ const qreal requiredWidth = columnWidthsSum() + m_headerWidget->sidePadding();
const QSizeF dynamicItemSize(qMax(size().width(), requiredWidth),
m_itemSize.height());
m_layouter->setItemSize(dynamicItemSize);
for (const QByteArray& role : qAsConst(m_visibleRoles)) {
widget->setColumnWidth(role, m_headerWidget->columnWidth(role));
}
- widget->setLeadingPadding(m_headerWidget->leadingPadding());
+ widget->setSidePadding(m_headerWidget->sidePadding());
}
void KItemListView::updatePreferredColumnWidths(const KItemRangeList& itemRanges)
qreal firstColumnWidth = m_headerWidget->columnWidth(firstRole);
QSizeF dynamicItemSize = m_itemSize;
- qreal requiredWidth = columnWidthsSum() + m_headerWidget->leadingPadding();
+ qreal requiredWidth = columnWidthsSum() + m_headerWidget->sidePadding()
+ + m_headerWidget->sidePadding(); // Adding the padding a second time so we have the same padding symmetrically on both sides of the view.
+ // This improves UX, looks better and increases the chances of users figuring out that the padding area can be used for deselecting and dropping files.
const qreal availableWidth = size().width();
if (requiredWidth < availableWidth) {
// Stretch the first column to use the whole remaining width