@@ -516,10 +516,23 @@ class DStyledItemDelegatePrivate : public DCORE_NAMESPACE::DObjectPrivate
516516 }
517517 }
518518
519+
520+ inline int itemSpacing () const
521+ {
522+ if (spacing >= 0 )
523+ return spacing;
524+ const auto type = backgroundType & DStyledItemDelegate::BackgroundType_Mask;
525+ if (type == DStyledItemDelegate::RoundedBackground)
526+ return 10 ;
527+ if (type == DStyledItemDelegate::ClipCornerBackground)
528+ return 1 ;
529+ return 0 ;
530+ }
531+
519532 DStyledItemDelegate::BackgroundType backgroundType = DStyledItemDelegate::NoBackground;
520533 QMargins margins;
521534 QSize itemSize;
522- int itemSpacing = 0 ;
535+ int spacing = - 1 ;
523536 QMap<QModelIndex, QList<QPair<QAction*, QRect>>> clickableActionMap;
524537 QAction *pressedAction = nullptr ;
525538 QList<QPointer<QWidget>> lastWidgets;
@@ -1176,9 +1189,9 @@ QSize DStyledItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QM
11761189 const QListView * lv = qobject_cast<const QListView*>(option.widget );
11771190 if (lv) {
11781191 if (lv->flow () == QListView::LeftToRight) {
1179- size.rwidth () += d->itemSpacing ;
1192+ size.rwidth () += d->itemSpacing () ;
11801193 } else {
1181- size.rheight () += d->itemSpacing ;
1194+ size.rheight () += d->itemSpacing () ;
11821195 }
11831196 }
11841197
@@ -1253,7 +1266,7 @@ int DStyledItemDelegate::spacing() const
12531266{
12541267 D_DC (DStyledItemDelegate);
12551268
1256- return d->itemSpacing ;
1269+ return d->itemSpacing () ;
12571270}
12581271
12591272void DStyledItemDelegate::setBackgroundType (DStyledItemDelegate::BackgroundType type)
@@ -1297,7 +1310,7 @@ void DStyledItemDelegate::setItemSpacing(int spacing)
12971310{
12981311 D_D (DStyledItemDelegate);
12991312
1300- d->itemSpacing = spacing;
1313+ d->spacing = spacing;
13011314}
13021315
13031316void DStyledItemDelegate::initStyleOption (QStyleOptionViewItem *option, const QModelIndex &index) const
@@ -1353,9 +1366,9 @@ void DStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option, const QM
13531366 const QListView * lv = qobject_cast<const QListView*>(option->widget );
13541367 if (lv) {
13551368 if (lv->flow () == QListView::LeftToRight) {
1356- option->rect .adjust (0 , 0 , 0 - d->itemSpacing , 0 );
1369+ option->rect .adjust (0 , 0 , 0 - d->itemSpacing () , 0 );
13571370 } else {
1358- option->rect .adjust (0 , 0 , 0 , 0 - d->itemSpacing );
1371+ option->rect .adjust (0 , 0 , 0 , 0 - d->itemSpacing () );
13591372 }
13601373 if (lv->window () && lv->window ()->isActiveWindow ()) {
13611374 option->state |= QStyle::State_Active;
0 commit comments