Skip to content

Commit 8adc53a

Browse files
sync: from linuxdeepin/dtkwidget
Synchronize source files from linuxdeepin/dtkwidget. Source-pull-request: linuxdeepin/dtkwidget#656
1 parent 0e34a5c commit 8adc53a

File tree

2 files changed

+56
-31
lines changed

2 files changed

+56
-31
lines changed

src/widgets/dlabel.cpp

Lines changed: 54 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
// SPDX-License-Identifier: LGPL-3.0-or-later
44

55
#include "dlabel.h"
6-
#include "private/dlabel_p.h"
76
#include "dtooltip.h"
7+
#include "private/dlabel_p.h"
88

99
#include <DPaletteHelper>
1010

@@ -257,48 +257,73 @@ void DLabel::paintEvent(QPaintEvent *event)
257257
}
258258
} else
259259
#endif
260-
if (d->pixmap && !d->pixmap->isNull()) {
261-
QPixmap pix;
262-
if (d->scaledcontents) {
263-
QSize scaledSize = cr.size() * devicePixelRatioF();
264-
if (!d->scaledpixmap || d->scaledpixmap->size() != scaledSize) {
260+
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
261+
if (d->pixmap && !d->pixmap->isNull()) {
262+
#else
263+
if (d->icon && !d->icon->isNull()) {
264+
#endif
265+
QPixmap pix;
266+
if (d->scaledcontents) {
267+
const auto dpr = devicePixelRatioF();
268+
QSize scaledSize = cr.size() * dpr;
269+
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
270+
if (!d->scaledpixmap || d->scaledpixmap->size() != scaledSize) {
271+
#else
272+
auto mode = isEnabled() ? QIcon::Normal : QIcon::Disabled;
273+
pix = d->icon->pixmap(scaledSize, dpr, mode);
274+
if (d->scaledcontents && pix.size() != cr.size() * dpr) {
275+
#endif
265276
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
266-
if (!d->cachedimage)
277+
if (!d->cachedimage)
267278
#endif
268279
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 2)
269-
d->cachedimage = new QImage(d->pixmap->toImage());
270-
delete d->scaledpixmap;
280+
d->cachedimage = new QImage(d->pixmap->toImage());
281+
delete d->scaledpixmap;
271282
#else
272283
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
273-
d->cachedimage = QImage(d->pixmap->toImage());
284+
d->cachedimage = QImage(d->pixmap->toImage());
274285
#endif
275-
d->scaledpixmap.reset();
286+
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
287+
d->scaledpixmap.reset();
276288
#endif
289+
#endif
290+
277291
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
278-
QImage scaledImage =
279-
d->cachedimage->scaled(scaledSize,
280-
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
292+
QImage scaledImage = d->cachedimage->scaled(
293+
scaledSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
294+
#elif QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
295+
QImage scaledImage = d->pixmap->scaled(
296+
scaledSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
281297
#else
282-
d->scaledpixmap = d->pixmap->scaled(scaledSize,
283-
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
298+
pix = pix.scaled(scaledSize, Qt::IgnoreAspectRatio,
299+
Qt::SmoothTransformation);
300+
pix.setDevicePixelRatio(dpr);
301+
d->icon->addPixmap(pix, mode);
284302
#endif
285303
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 2)
286-
d->scaledpixmap = new QPixmap(QPixmap::fromImage(scaledImage));
304+
d->scaledpixmap = new QPixmap(QPixmap::fromImage(scaledImage));
305+
#elif QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
306+
d->scaledpixmap = QPixmap(QPixmap::fromImage(scaledImage));
307+
#endif
308+
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
309+
d->scaledpixmap->setDevicePixelRatio(dpr);
310+
#endif
311+
}
312+
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
313+
pix = *d->scaledpixmap;
314+
} else {
315+
pix = *d->pixmap;
316+
}
287317
#else
288-
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
289-
d->scaledpixmap = QPixmap(QPixmap::fromImage(scaledImage));
318+
}
290319
#endif
320+
QStyleOption opt;
321+
opt.initFrom(this);
322+
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
323+
if (!isEnabled())
324+
pix = style->generatedIconPixmap(QIcon::Disabled, pix, &opt);
291325
#endif
292-
d->scaledpixmap->setDevicePixelRatio(devicePixelRatioF());
293-
}
294-
pix = *d->scaledpixmap;
295-
} else
296-
pix = *d->pixmap;
297-
QStyleOption opt;
298-
opt.initFrom(this);
299-
if (!isEnabled())
300-
pix = style->generatedIconPixmap(QIcon::Disabled, pix, &opt);
301-
style->drawItemPixmap(&painter, cr, align, pix);
326+
style->drawItemPixmap(&painter, cr, align, pix);
302327
}
303328
}
304329

src/widgets/dtitlebarsettings.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,6 @@ DTitlebarSettingsImpl *DTitlebarSettings::impl()
6060
return d->impl;
6161
}
6262

63-
#include "moc_dtitlebarsettings.cpp"
64-
6563
DWIDGET_END_NAMESPACE
64+
65+
#include "moc_dtitlebarsettings.cpp"

0 commit comments

Comments
 (0)