diff options
Diffstat (limited to 'src/widgets/widgets/qlabel.cpp')
-rw-r--r-- | src/widgets/widgets/qlabel.cpp | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp index be57285761..f4155de0a0 100644 --- a/src/widgets/widgets/qlabel.cpp +++ b/src/widgets/widgets/qlabel.cpp @@ -18,7 +18,7 @@ #include "private/qstylesheetstyle_p.h" #include <qmath.h> -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) #include <qaccessible.h> #endif @@ -304,7 +304,7 @@ void QLabel::setText(const QString &text) d->updateLabel(); -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) if (accessibleName().isEmpty()) { QAccessibleEvent event(this, QAccessible::NameChanged); QAccessible::updateAccessibility(&event); @@ -1091,8 +1091,10 @@ void QLabel::paintEvent(QPaintEvent *) #endif if (d->pixmap && !d->pixmap->isNull()) { QPixmap pix; - if (d->scaledcontents) { - QSize scaledSize = cr.size() * devicePixelRatio(); + const qreal dpr = devicePixelRatio(); + if (d->scaledcontents || dpr != d->pixmap->devicePixelRatio()) { + QSize scaledSize = d->scaledcontents ? (cr.size() * dpr) + : (d->pixmap->size() * (dpr / d->pixmap->devicePixelRatio())); if (!d->scaledpixmap || d->scaledpixmap->size() != scaledSize) { if (!d->cachedimage) d->cachedimage = d->pixmap->toImage(); @@ -1101,7 +1103,7 @@ void QLabel::paintEvent(QPaintEvent *) d->cachedimage->scaled(scaledSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); d->scaledpixmap = QPixmap::fromImage(std::move(scaledImage)); - d->scaledpixmap->setDevicePixelRatio(devicePixelRatio()); + d->scaledpixmap->setDevicePixelRatio(dpr); } pix = *d->scaledpixmap; } else @@ -1169,12 +1171,14 @@ void QLabel::setBuddy(QWidget *buddy) Q_D(QLabel); if (d->buddy) - disconnect(d->buddy, SIGNAL(destroyed()), this, SLOT(_q_buddyDeleted())); + QObjectPrivate::disconnect(d->buddy, &QObject::destroyed, + d, &QLabelPrivate::buddyDeleted); d->buddy = buddy; if (buddy) - connect(buddy, SIGNAL(destroyed()), this, SLOT(_q_buddyDeleted())); + QObjectPrivate::connect(buddy, &QObject::destroyed, + d, &QLabelPrivate::buddyDeleted); if (d->isTextLabel) { if (d->shortcutId) @@ -1217,7 +1221,7 @@ void QLabelPrivate::updateShortcut() } -void QLabelPrivate::_q_buddyDeleted() +void QLabelPrivate::buddyDeleted() { Q_Q(QLabel); q->setBuddy(nullptr); @@ -1226,7 +1230,7 @@ void QLabelPrivate::_q_buddyDeleted() #endif // QT_NO_SHORTCUT #if QT_CONFIG(movie) -void QLabelPrivate::_q_movieUpdated(const QRect& rect) +void QLabelPrivate::movieUpdated(const QRect &rect) { Q_Q(QLabel); if (movie && movie->isValid()) { @@ -1249,12 +1253,12 @@ void QLabelPrivate::_q_movieUpdated(const QRect& rect) } } -void QLabelPrivate::_q_movieResized(const QSize& size) +void QLabelPrivate::movieResized(const QSize &size) { Q_Q(QLabel); q->update(); //we need to refresh the whole background in case the new size is smaller valid_hints = false; - _q_movieUpdated(QRect(QPoint(0,0), size)); + movieUpdated(QRect(QPoint(0,0), size)); q->updateGeometry(); } @@ -1276,8 +1280,10 @@ void QLabel::setMovie(QMovie *movie) return; d->movie = movie; - connect(movie, SIGNAL(resized(QSize)), this, SLOT(_q_movieResized(QSize))); - connect(movie, SIGNAL(updated(QRect)), this, SLOT(_q_movieUpdated(QRect))); + d->movieConnections = { + QObjectPrivate::connect(movie, &QMovie::resized, d, &QLabelPrivate::movieResized), + QObjectPrivate::connect(movie, &QMovie::updated, d, &QLabelPrivate::movieUpdated), + }; // Assume that if the movie is running, // resize/update signals will come soon enough @@ -1315,10 +1321,8 @@ void QLabelPrivate::clearContents() shortcutId = 0; #endif #if QT_CONFIG(movie) - if (movie) { - QObject::disconnect(movie, SIGNAL(resized(QSize)), q, SLOT(_q_movieResized(QSize))); - QObject::disconnect(movie, SIGNAL(updated(QRect)), q, SLOT(_q_movieUpdated(QRect))); - } + for (const auto &conn : std::as_const(movieConnections)) + QObject::disconnect(conn); movie = nullptr; #endif #ifndef QT_NO_CURSOR @@ -1578,12 +1582,12 @@ void QLabelPrivate::ensureTextControl() const control->setOpenExternalLinks(openExternalLinks); control->setPalette(q->palette()); control->setFocus(q->hasFocus()); - QObject::connect(control, SIGNAL(updateRequest(QRectF)), - q, SLOT(update())); - QObject::connect(control, SIGNAL(linkHovered(QString)), - q, SLOT(_q_linkHovered(QString))); - QObject::connect(control, SIGNAL(linkActivated(QString)), - q, SIGNAL(linkActivated(QString))); + QObject::connect(control, &QWidgetTextControl::updateRequest, + q, qOverload<>(&QLabel::update)); + QObject::connect(control, &QWidgetTextControl::linkActivated, + q, &QLabel::linkActivated); + QObjectPrivate::connect(control, &QWidgetTextControl::linkHovered, + this, &QLabelPrivate::linkHovered); textLayoutDirty = true; textDirty = true; } @@ -1599,7 +1603,7 @@ void QLabelPrivate::sendControlEvent(QEvent *e) control->processEvent(e, -layoutRect().topLeft(), q); } -void QLabelPrivate::_q_linkHovered(const QString &anchor) +void QLabelPrivate::linkHovered(const QString &anchor) { Q_Q(QLabel); #ifndef QT_NO_CURSOR @@ -1650,15 +1654,10 @@ QPoint QLabelPrivate::layoutPoint(const QPoint& p) const #ifndef QT_NO_CONTEXTMENU QMenu *QLabelPrivate::createStandardContextMenu(const QPoint &pos) { - if (!control || effectiveTextFormat == Qt::PlainText) + if (!control) return nullptr; const QPoint p = layoutPoint(pos); - QString linkToCopy = control->document()->documentLayout()->anchorAt(p); - - if (linkToCopy.isEmpty()) - return nullptr; - return control->createStandardContextMenu(p, q_func()); } #endif |