From 41b3d0b142387c3acbba73f6ac332b3f314f7700 Mon Sep 17 00:00:00 2001 From: Fushan Wen Date: Thu, 9 Jun 2022 12:57:55 +0800 Subject: [PATCH] qmlcontrols: add `Pad` fill mode in `QImageItem` This matches the behavior in `QQuickImage`. BUG: 389623 FIXED-IN: 5.96 --- src/qmlcontrols/kquickcontrolsaddons/qimageitem.cpp | 7 ++++++- src/qmlcontrols/kquickcontrolsaddons/qimageitem.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/qmlcontrols/kquickcontrolsaddons/qimageitem.cpp b/src/qmlcontrols/kquickcontrolsaddons/qimageitem.cpp index 36929eed..060069a1 100644 --- a/src/qmlcontrols/kquickcontrolsaddons/qimageitem.cpp +++ b/src/qmlcontrols/kquickcontrolsaddons/qimageitem.cpp @@ -103,7 +103,11 @@ void QImageItem::paint(QPainter *painter) painter->scale(1, height() / (qreal)m_image.height()); } - if (m_fillMode >= Tile) { + if (m_fillMode == Pad) { + QRect centeredRect = m_paintedRect; + centeredRect.moveCenter(m_image.rect().center()); + painter->drawImage(m_paintedRect, m_image, centeredRect); + } else if (m_fillMode >= Tile) { painter->drawTiledPixmap(m_paintedRect, QPixmap::fromImage(m_image)); } else { painter->drawImage(m_paintedRect, m_image, m_image.rect()); @@ -174,6 +178,7 @@ void QImageItem::updatePaintedRect() } case Stretch: case Tile: + case Pad: default: destRect = boundingRect().toRect(); } diff --git a/src/qmlcontrols/kquickcontrolsaddons/qimageitem.h b/src/qmlcontrols/kquickcontrolsaddons/qimageitem.h index f32ae7da..ba38a4a1 100644 --- a/src/qmlcontrols/kquickcontrolsaddons/qimageitem.h +++ b/src/qmlcontrols/kquickcontrolsaddons/qimageitem.h @@ -32,6 +32,7 @@ public: Tile, // the image is duplicated horizontally and vertically TileVertically, // the image is stretched horizontally and tiled vertically TileHorizontally, // the image is stretched vertically and tiled horizontally + Pad, /**< the image is not transformed @since 5.96 **/ }; Q_ENUM(FillMode) -- GitLab