diff --git a/playground/images/Image.cpp b/playground/images/Image.cpp index bfdfbf58..6fe4b254 100644 --- a/playground/images/Image.cpp +++ b/playground/images/Image.cpp @@ -124,24 +124,42 @@ void Image::itemChange( QQuickItem::ItemChange change, } } +#if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 ) + +void Image::geometryChange( + const QRectF& newGeometry, const QRectF& oldGeometry ) +{ + Inherited::geometryChange( newGeometry, oldGeometry ); + + if ( newGeometry.size() != oldGeometry.size() ) + adjustSourceSize( newGeometry.size() ); +} + +#else + void Image::geometryChanged( const QRectF& newGeometry, const QRectF& oldGeometry ) { Inherited::geometryChanged( newGeometry, oldGeometry ); if ( newGeometry.size() != oldGeometry.size() ) + adjustSourceSize( newGeometry.size() ); +} + +#endif + +void Image::adjustSourceSize( const QSizeF& size ) +{ + if ( m_data->sourceSizeAdjustment ) { - if ( m_data->sourceSizeAdjustment ) + if ( m_data->deferredUpdates ) { - if ( m_data->deferredUpdates ) - { - setImplicitSize( newGeometry.width(), newGeometry.height() ); - polish(); - } - else - { - setSourceSize( newGeometry.size().toSize() ); - } + setImplicitSize( size.width(), size.height() ); + polish(); + } + else + { + setSourceSize( size.toSize() ); } } } diff --git a/playground/images/Image.h b/playground/images/Image.h index 931a3dd9..30d4e75a 100644 --- a/playground/images/Image.h +++ b/playground/images/Image.h @@ -59,7 +59,11 @@ class Image : public QQuickImage void deferredUpdatesChanged(); protected: +#if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 ) + void geometryChange( const QRectF&, const QRectF& ) override; +#else void geometryChanged( const QRectF&, const QRectF& ) override; +#endif void itemChange( ItemChange, const ItemChangeData& ) override; void componentComplete() override; @@ -67,6 +71,8 @@ class Image : public QQuickImage void updatePolish() override; private: + void adjustSourceSize( const QSizeF& ); + class PrivateData; std::unique_ptr< PrivateData > m_data; };