Skip to content

Commit 4b39aae

Browse files
sync: from linuxdeepin/dtkwidget
Synchronize source files from linuxdeepin/dtkwidget. Source-pull-request: linuxdeepin/dtkwidget#671
1 parent 0ba116b commit 4b39aae

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

src/widgets/dlistview.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -776,14 +776,6 @@ void DListView::setBackgroundType(DStyledItemDelegate::BackgroundType background
776776
{
777777
if (DStyledItemDelegate *d = qobject_cast<DStyledItemDelegate *>(itemDelegate())) {
778778
d->setBackgroundType(backgroundType);
779-
780-
if (d->backgroundType() == DStyledItemDelegate::RoundedBackground) {
781-
d->setItemSpacing(10);
782-
} else if (d->backgroundType() == DStyledItemDelegate::ClipCornerBackground) {
783-
d->setItemSpacing(1);
784-
} else {
785-
d->setItemSpacing(0);
786-
}
787779
}
788780
}
789781

src/widgets/dstyleditemdelegate.cpp

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

12591272
void 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

13031316
void 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

Comments
 (0)