2018-05-01 10:26:59 +00:00
|
|
|
/******************************************************************************
|
2024-01-17 13:31:45 +00:00
|
|
|
* QSkinny - Copyright (C) The authors
|
2023-04-06 07:23:37 +00:00
|
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
2018-05-01 10:26:59 +00:00
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
#ifndef QSK_QUICK_H
|
2022-03-20 12:11:34 +00:00
|
|
|
#define QSK_QUICK_H
|
2018-05-01 10:26:59 +00:00
|
|
|
|
|
|
|
#include "QskGlobal.h"
|
2022-04-08 14:46:20 +00:00
|
|
|
#include "QskPlacementPolicy.h"
|
|
|
|
|
2018-07-19 12:10:48 +00:00
|
|
|
#include <qnamespace.h>
|
2019-03-15 14:39:27 +00:00
|
|
|
#include <qquickitem.h>
|
2018-07-19 12:10:48 +00:00
|
|
|
|
2019-09-10 15:01:47 +00:00
|
|
|
class QskSizePolicy;
|
|
|
|
|
2018-07-19 12:10:48 +00:00
|
|
|
class QSGNode;
|
2023-10-30 16:08:01 +00:00
|
|
|
class QSGTransformNode;
|
2023-12-17 16:32:07 +00:00
|
|
|
class QSGRootNode;
|
2018-07-19 12:10:48 +00:00
|
|
|
class QRectF;
|
2023-12-22 12:52:01 +00:00
|
|
|
class QRhi;
|
2023-12-17 16:32:07 +00:00
|
|
|
|
2019-01-04 12:42:16 +00:00
|
|
|
template< typename T > class QList;
|
2018-05-01 10:26:59 +00:00
|
|
|
|
|
|
|
/*
|
2023-12-22 12:52:01 +00:00
|
|
|
Exporting useful methods from QQuickItemPrivate/QQuickWindowPrivate
|
2018-05-01 10:26:59 +00:00
|
|
|
*/
|
|
|
|
|
2023-12-22 12:52:01 +00:00
|
|
|
QSK_EXPORT QRhi* qskRenderingHardwareInterface( const QQuickWindow* );
|
|
|
|
|
2023-10-23 16:32:08 +00:00
|
|
|
QSK_EXPORT bool qskIsItemInDestructor( const QQuickItem* );
|
2019-01-04 12:42:16 +00:00
|
|
|
QSK_EXPORT bool qskIsItemComplete( const QQuickItem* );
|
2018-05-01 10:26:59 +00:00
|
|
|
QSK_EXPORT bool qskIsAncestorOf( const QQuickItem* item, const QQuickItem* child );
|
|
|
|
QSK_EXPORT bool qskIsTabFence( const QQuickItem* );
|
|
|
|
QSK_EXPORT bool qskIsShortcutScope( const QQuickItem* );
|
2018-06-26 09:10:44 +00:00
|
|
|
QSK_EXPORT bool qskIsVisibleTo( const QQuickItem* item, const QQuickItem* ancestor );
|
2018-10-23 17:18:05 +00:00
|
|
|
QSK_EXPORT bool qskIsVisibleToParent( const QQuickItem* );
|
2019-05-17 20:33:02 +00:00
|
|
|
QSK_EXPORT bool qskIsPolishScheduled( const QQuickItem* );
|
2018-05-01 10:26:59 +00:00
|
|
|
|
2019-09-10 15:01:47 +00:00
|
|
|
QSK_EXPORT bool qskIsVisibleToLayout( const QQuickItem* );
|
2022-04-07 15:19:59 +00:00
|
|
|
QSK_EXPORT bool qskIsAdjustableByLayout( const QQuickItem* );
|
2019-09-10 15:01:47 +00:00
|
|
|
|
|
|
|
QSK_EXPORT QSizeF qskEffectiveSizeHint( const QQuickItem*,
|
|
|
|
Qt::SizeHint, const QSizeF& constraint = QSizeF() );
|
|
|
|
|
|
|
|
QSK_EXPORT QSizeF qskSizeConstraint( const QQuickItem*,
|
|
|
|
Qt::SizeHint, const QSizeF& constraint = QSizeF() );
|
|
|
|
|
|
|
|
QSK_EXPORT QSizeF qskConstrainedItemSize( const QQuickItem*, const QSizeF& );
|
|
|
|
QSK_EXPORT QRectF qskConstrainedItemRect(
|
|
|
|
const QQuickItem*, const QRectF&, Qt::Alignment );
|
|
|
|
|
|
|
|
QSK_EXPORT QskSizePolicy qskSizePolicy( const QQuickItem* );
|
|
|
|
QSK_EXPORT Qt::Alignment qskLayoutAlignmentHint( const QQuickItem* );
|
2022-04-08 14:46:20 +00:00
|
|
|
|
|
|
|
QSK_EXPORT QskPlacementPolicy qskPlacementPolicy( const QQuickItem* );
|
|
|
|
QSK_EXPORT void qskSetPlacementPolicy( QQuickItem*, QskPlacementPolicy );
|
|
|
|
|
|
|
|
QSK_EXPORT QskPlacementPolicy::Policy qskEffectivePlacementPolicy( const QQuickItem* );
|
2019-05-12 10:18:41 +00:00
|
|
|
|
2018-05-01 10:26:59 +00:00
|
|
|
QSK_EXPORT QRectF qskItemRect( const QQuickItem* );
|
|
|
|
|
|
|
|
QSK_EXPORT QRectF qskItemGeometry( const QQuickItem* );
|
|
|
|
QSK_EXPORT void qskSetItemGeometry( QQuickItem*, const QRectF& );
|
|
|
|
|
|
|
|
QSK_EXPORT QQuickItem* qskNearestFocusScope( const QQuickItem* );
|
|
|
|
QSK_EXPORT void qskForceActiveFocus( QQuickItem*, Qt::FocusReason );
|
|
|
|
|
|
|
|
QSK_EXPORT QList< QQuickItem* > qskPaintOrderChildItems( const QQuickItem* );
|
|
|
|
|
|
|
|
QSK_EXPORT void qskUpdateInputMethod( const QQuickItem*, Qt::InputMethodQueries );
|
2018-06-12 16:43:14 +00:00
|
|
|
QSK_EXPORT void qskInputMethodSetVisible( const QQuickItem*, bool );
|
2018-05-01 10:26:59 +00:00
|
|
|
|
2023-10-30 16:08:01 +00:00
|
|
|
QSK_EXPORT const QSGTransformNode* qskItemNode( const QQuickItem* );
|
2018-05-01 10:26:59 +00:00
|
|
|
QSK_EXPORT const QSGNode* qskPaintNode( const QQuickItem* );
|
|
|
|
|
2023-12-17 16:32:07 +00:00
|
|
|
QSK_EXPORT const QSGRootNode* qskScenegraphAnchorNode( const QQuickItem* );
|
|
|
|
QSK_EXPORT const QSGRootNode* qskScenegraphAnchorNode( const QQuickWindow* );
|
2025-01-03 09:10:36 +00:00
|
|
|
QSK_EXPORT void qskSetScenegraphAnchor( QQuickItem*, bool on );
|
2023-12-17 16:32:07 +00:00
|
|
|
|
2019-11-05 10:47:56 +00:00
|
|
|
QSK_EXPORT void qskItemUpdateRecursive( QQuickItem* );
|
|
|
|
|
2021-03-08 11:56:13 +00:00
|
|
|
QSK_EXPORT bool qskGrabMouse( QQuickItem* );
|
|
|
|
QSK_EXPORT void qskUngrabMouse( QQuickItem* );
|
|
|
|
QSK_EXPORT bool qskIsMouseGrabber( const QQuickItem* );
|
|
|
|
|
2019-05-17 20:33:02 +00:00
|
|
|
inline void qskSetItemGeometry(
|
|
|
|
QQuickItem* item, qreal x, qreal y, qreal width, qreal height )
|
|
|
|
{
|
|
|
|
qskSetItemGeometry( item, QRectF( x, y, width, height ) );
|
|
|
|
}
|
|
|
|
|
2019-03-16 15:11:27 +00:00
|
|
|
template< typename T >
|
2019-04-18 14:13:05 +00:00
|
|
|
inline T qskFindAncestorOf( QQuickItem* item )
|
2019-03-15 14:39:27 +00:00
|
|
|
{
|
|
|
|
for ( auto it = item; it != nullptr; it = it->parentItem() )
|
|
|
|
{
|
2019-03-16 15:11:27 +00:00
|
|
|
if ( auto ancestor = qobject_cast< T >( it ) )
|
2019-03-15 14:39:27 +00:00
|
|
|
return ancestor;
|
|
|
|
}
|
|
|
|
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
2019-04-18 14:13:05 +00:00
|
|
|
template< typename T >
|
|
|
|
inline T qskFindAncestorOf( const QQuickItem* item )
|
|
|
|
{
|
2023-03-20 10:01:50 +00:00
|
|
|
return qskFindAncestorOf< T >( const_cast< QQuickItem* >( item ) );
|
2019-09-10 15:01:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
inline qreal qskHeightForWidth(
|
|
|
|
const QQuickItem* item, Qt::SizeHint which, qreal width )
|
|
|
|
{
|
|
|
|
return qskEffectiveSizeHint(
|
|
|
|
item, which, QSizeF( width, -1.0 ) ).height();
|
|
|
|
}
|
|
|
|
|
|
|
|
inline qreal qskWidthForHeight(
|
|
|
|
const QQuickItem* item, Qt::SizeHint which, qreal height )
|
|
|
|
{
|
|
|
|
return qskEffectiveSizeHint(
|
|
|
|
item, which, QSizeF( -1.0, height ) ).width();
|
|
|
|
}
|
|
|
|
|
|
|
|
inline QRectF qskConstrainedItemRect( const QQuickItem* item, const QRectF& rect )
|
|
|
|
{
|
|
|
|
return qskConstrainedItemRect( item, rect, qskLayoutAlignmentHint( item ) );
|
2019-04-18 14:13:05 +00:00
|
|
|
}
|
|
|
|
|
2018-05-01 10:26:59 +00:00
|
|
|
#endif
|