From 217c722e71d73d3d18bbf9901bc67afa8d95d9e7 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Wed, 7 Feb 2018 19:30:34 +0100 Subject: [PATCH] not using the deprecated QQuickItem::boundingRect anymore --- src/controls/QskControl.cpp | 22 ++++++++++++++++++++-- src/controls/QskControl.h | 9 +++++++++ src/controls/QskFocusIndicator.cpp | 2 +- src/controls/QskFocusIndicatorSkinlet.cpp | 2 +- src/controls/QskInputPanel.cpp | 4 +++- src/controls/QskPopup.cpp | 4 ++-- src/controls/QskSkinlet.cpp | 4 ++-- src/layouts/QskLayoutItem.cpp | 2 +- 8 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/controls/QskControl.cpp b/src/controls/QskControl.cpp index 0d09284e..f49b4237 100644 --- a/src/controls/QskControl.cpp +++ b/src/controls/QskControl.cpp @@ -42,6 +42,18 @@ static inline void qskSendEventTo( QObject* object, QEvent::Type type ) QCoreApplication::sendEvent( object, &event ); } +QRectF qskItemRect( const QQuickItem* item ) +{ + auto d = QQuickItemPrivate::get( item ); + return QRectF( 0, 0, d->width, d->height ); +} + +QRectF qskItemGeometry( const QQuickItem* item ) +{ + auto d = QQuickItemPrivate::get( item ); + return QRectF( d->x, d->y, d->width, d->height ); +} + bool qskIsItemComplete( const QQuickItem* item ) { return QQuickItemPrivate::get( item )->componentComplete; @@ -532,6 +544,12 @@ void QskControl::setGeometry( qreal x, qreal y, qreal width, qreal height ) } } +QRectF QskControl::rect() const +{ + Q_D( const QskControl ); + return QRectF( 0, 0, d->width, d->height ); +} + QRectF QskControl::geometry() const { Q_D( const QskControl ); @@ -887,7 +905,7 @@ QMarginsF QskControl::margins() const QRectF QskControl::contentsRect() const { - const QRectF r = boundingRect(); + const QRectF r = rect(); const auto m = margins(); qreal left = r.left() + m.left(); @@ -1476,7 +1494,7 @@ QRectF QskControl::layoutRect() const QRectF QskControl::gestureRect() const { - return boundingRect(); + return rect(); } QRectF QskControl::focusIndicatorRect() const diff --git a/src/controls/QskControl.h b/src/controls/QskControl.h index c289d0cd..b0d74a44 100644 --- a/src/controls/QskControl.h +++ b/src/controls/QskControl.h @@ -64,6 +64,8 @@ class QSK_EXPORT QskControl : public QQuickItem, public QskResizable, public Qsk Q_PROPERTY( QSizeF maximumSize READ maximumSize WRITE setMaximumSize ) Q_PROPERTY( QSizeF preferredSize READ preferredSize WRITE setPreferredSize ) + Q_PROPERTY( QRectF geometry READ geometry WRITE setGeometry ) + using Inherited = QQuickItem; public: @@ -103,6 +105,8 @@ public: QskGradient background() const; QRectF geometry() const; + + QRectF rect() const; QRectF contentsRect() const; virtual QRectF layoutRect() const; @@ -205,6 +209,9 @@ protected: virtual void updateLayout(); // called in updatePolish private: + // don't use boundingRect - it seems to be deprecated + virtual QRectF boundingRect() const override final { return rect(); } + void setActiveFocusOnTab( bool ) = delete; // use setFocusPolicy instead virtual QSGNode* updatePaintNode( QSGNode*, UpdatePaintNodeData* ) override final; @@ -246,6 +253,8 @@ QSK_EXPORT bool qskIsAncestorOf( const QQuickItem* item, const QQuickItem *child QSK_EXPORT bool qskIsTransparentForPositioner( const QQuickItem* ); QSK_EXPORT bool qskIsTabFence( const QQuickItem* ); QSK_EXPORT bool qskIsShortcutScope( const QQuickItem* ); +QSK_EXPORT QRectF qskItemRect( const QQuickItem* ); +QSK_EXPORT QRectF qskItemGeometry( const QQuickItem* ); QSK_EXPORT QQuickItem* qskNearestFocusScope( const QQuickItem* ); QSK_EXPORT QList qskPaintOrderChildItems( const QQuickItem* ); diff --git a/src/controls/QskFocusIndicator.cpp b/src/controls/QskFocusIndicator.cpp index 88c0e998..57eb9b40 100644 --- a/src/controls/QskFocusIndicator.cpp +++ b/src/controls/QskFocusIndicator.cpp @@ -21,7 +21,7 @@ static inline QRectF qskFocusIndicatorRect( const QQuickItem* item ) if ( v.canConvert( QMetaType::QRectF ) ) return v.toRectF(); - return item->boundingRect(); + return qskItemRect( item ); } class QskFocusIndicator::PrivateData diff --git a/src/controls/QskFocusIndicatorSkinlet.cpp b/src/controls/QskFocusIndicatorSkinlet.cpp index 840f1ab9..2005c4ff 100644 --- a/src/controls/QskFocusIndicatorSkinlet.cpp +++ b/src/controls/QskFocusIndicatorSkinlet.cpp @@ -21,7 +21,7 @@ QRectF QskFocusIndicatorSkinlet::subControlRect( if ( subControl == QskFocusIndicator::Panel ) { - return indicator->boundingRect(); + return indicator->rect(); } return Inherited::subControlRect( skinnable, subControl ); diff --git a/src/controls/QskInputPanel.cpp b/src/controls/QskInputPanel.cpp index 7c61a79f..a607e2ea 100644 --- a/src/controls/QskInputPanel.cpp +++ b/src/controls/QskInputPanel.cpp @@ -532,9 +532,11 @@ void QskInputPanel::setCandidateOffset( int candidateOffset ) QRectF QskInputPanel::keyboardRect() const { - auto keyboardRect = boundingRect(); // ### margins? would eliminate this thing below + auto keyboardRect = rect(); // ### margins? would eliminate this thing below + if ( QskDialog::instance()->policy() != QskDialog::TopLevelWindow ) keyboardRect.adjust( 0, keyboardRect.height() * 0.5, 0, 0 ); + return keyboardRect; } diff --git a/src/controls/QskPopup.cpp b/src/controls/QskPopup.cpp index ecd18e2e..284406c8 100644 --- a/src/controls/QskPopup.cpp +++ b/src/controls/QskPopup.cpp @@ -127,7 +127,7 @@ namespace } QQuickItem* popup = parentItem(); - doSwallow = !popup->boundingRect().contains( + doSwallow = !qskItemRect( popup ).contains( popup->mapFromItem( this, pos ) ); break; @@ -152,7 +152,7 @@ namespace if ( QskPopup* popup = qobject_cast< QskPopup* >( parentItem() ) ) { const QRectF r = popup->overlayRect(); - if ( r != boundingRect() ) + if ( r != qskItemGeometry( this ) ) { setPosition( r.topLeft() ); setSize( r.size() ); diff --git a/src/controls/QskSkinlet.cpp b/src/controls/QskSkinlet.cpp index bf54815f..5be9f326 100644 --- a/src/controls/QskSkinlet.cpp +++ b/src/controls/QskSkinlet.cpp @@ -213,7 +213,7 @@ void QskSkinlet::updateNode( QskSkinnable* skinnable, QSGNode* parentNode ) cons QSGNode* QskSkinlet::updateBackgroundNode( const QskControl* control, QSGNode* node ) const { - const QRectF rect = control->boundingRect(); + const QRectF rect = control->rect(); if ( rect.isEmpty() ) return nullptr; @@ -261,7 +261,7 @@ QSGNode* QskSkinlet::updateDebugNode( rectNode->setColor( color ); } - const QRectF r = control->boundingRect(); + const QRectF r = control->rect(); if ( rectNode->rect() != r ) rectNode->setRect( r ); diff --git a/src/layouts/QskLayoutItem.cpp b/src/layouts/QskLayoutItem.cpp index 6591b1db..df0450f8 100644 --- a/src/layouts/QskLayoutItem.cpp +++ b/src/layouts/QskLayoutItem.cpp @@ -156,7 +156,7 @@ void QskLayoutItem::setGeometry( const QRectF& rect ) if( m_updateMode == UpdateNone ) { if ( !m_isGeometryDirty ) - m_isGeometryDirty = ( rect != m_item->boundingRect() ); + m_isGeometryDirty = ( rect != qskItemGeometry( m_item ) ); return; }