diff --git a/src/widgets/dlistview.cpp b/src/widgets/dlistview.cpp index 74a3315a9..d39ca27c8 100644 --- a/src/widgets/dlistview.cpp +++ b/src/widgets/dlistview.cpp @@ -776,6 +776,14 @@ void DListView::setBackgroundType(DStyledItemDelegate::BackgroundType background { if (DStyledItemDelegate *d = qobject_cast(itemDelegate())) { d->setBackgroundType(backgroundType); + + if (d->spacing() < 0) { + if (d->backgroundType() == DStyledItemDelegate::RoundedBackground) { + d->setItemSpacing(10); + } else if (d->backgroundType() == DStyledItemDelegate::ClipCornerBackground) { + d->setItemSpacing(1); + } + } } } diff --git a/src/widgets/dstyleditemdelegate.cpp b/src/widgets/dstyleditemdelegate.cpp index 93ea277fd..fbdaf819b 100644 --- a/src/widgets/dstyleditemdelegate.cpp +++ b/src/widgets/dstyleditemdelegate.cpp @@ -516,23 +516,17 @@ class DStyledItemDelegatePrivate : public DCORE_NAMESPACE::DObjectPrivate } } - - inline int itemSpacing() const + inline int spacing() const { - if (spacing >= 0) - return spacing; - const auto type = backgroundType & DStyledItemDelegate::BackgroundType_Mask; - if (type == DStyledItemDelegate::RoundedBackground) - return 10; - if (type == DStyledItemDelegate::ClipCornerBackground) - return 1; - return 0; + if (itemSpacing < 0) + return 0; + return itemSpacing; } DStyledItemDelegate::BackgroundType backgroundType = DStyledItemDelegate::NoBackground; QMargins margins; QSize itemSize; - int spacing = -1; + int itemSpacing = -1; QMap>> clickableActionMap; QAction *pressedAction = nullptr; QList> lastWidgets; @@ -1189,9 +1183,9 @@ QSize DStyledItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QM const QListView * lv = qobject_cast(option.widget); if (lv) { if (lv->flow() == QListView::LeftToRight) { - size.rwidth() += d->itemSpacing(); + size.rwidth() += d->spacing(); } else { - size.rheight() += d->itemSpacing(); + size.rheight() += d->spacing(); } } @@ -1266,7 +1260,7 @@ int DStyledItemDelegate::spacing() const { D_DC(DStyledItemDelegate); - return d->itemSpacing(); + return d->itemSpacing; } void DStyledItemDelegate::setBackgroundType(DStyledItemDelegate::BackgroundType type) @@ -1310,7 +1304,7 @@ void DStyledItemDelegate::setItemSpacing(int spacing) { D_D(DStyledItemDelegate); - d->spacing = spacing; + d->itemSpacing = spacing; } void DStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const @@ -1366,9 +1360,9 @@ void DStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option, const QM const QListView * lv = qobject_cast(option->widget); if (lv) { if (lv->flow() == QListView::LeftToRight) { - option->rect.adjust(0, 0, 0 - d->itemSpacing(), 0); + option->rect.adjust(0, 0, 0 - d->spacing(), 0); } else { - option->rect.adjust(0, 0, 0, 0 - d->itemSpacing()); + option->rect.adjust(0, 0, 0, 0 - d->spacing()); } if (lv->window() && lv->window()->isActiveWindow()) { option->state |= QStyle::State_Active;