QskControl::isVisibleTo added

This commit is contained in:
Uwe Rathmann 2018-06-26 11:10:44 +02:00
parent dcf77a0ae1
commit c752ee547f
4 changed files with 37 additions and 0 deletions

View File

@ -431,6 +431,11 @@ void QskControl::hide()
Inherited::setVisible( false );
}
bool QskControl::isVisibleTo( const QQuickItem* ancestor ) const
{
return qskIsVisibleTo( this, ancestor );
}
void QskControl::setGeometry( qreal x, qreal y, qreal width, qreal height )
{
// QQuickItem does not even offer changing the geometry
@ -1633,6 +1638,9 @@ void QskControl::updatePolish()
}
}
if ( !d->isInitiallyPainted )
aboutToShow();
updateLayout();
}
@ -1727,6 +1735,10 @@ QRectF QskControl::focusIndicatorRect() const
return contentsRect();
}
void QskControl::aboutToShow()
{
}
void QskControl::updateLayout()
{
}

View File

@ -187,6 +187,8 @@ public:
virtual QSizeF contentsSizeHint() const;
bool isVisibleTo( const QQuickItem* ) const;
QLocale locale() const;
void resetLocale();
@ -247,6 +249,7 @@ protected:
void cleanupNodes();
virtual void aboutToShow(); // called in updatePolish
virtual void updateLayout(); // called in updatePolish
private:

View File

@ -64,6 +64,27 @@ bool qskIsAncestorOf( const QQuickItem* item, const QQuickItem* child )
#endif
}
bool qskIsVisibleTo( const QQuickItem* item, const QQuickItem* ancestor )
{
if ( item == nullptr )
return false;
if ( ancestor == nullptr )
return item->isVisible(); // like QWidget::isVisibleTo
for ( item = item->parentItem();
item = item->parentItem(); item != ancestor )
{
if ( item == nullptr )
return false; // ancestor is no parent
if ( !QQuickItemPrivate::get( item )->explicitVisible )
return false;
}
return true;
}
bool qskIsTabFence( const QQuickItem* item )
{
if ( item == nullptr )

View File

@ -19,6 +19,7 @@ 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 bool qskIsVisibleTo( const QQuickItem* item, const QQuickItem* ancestor );
QSK_EXPORT QRectF qskItemRect( const QQuickItem* );