7#include <QtQuick/private/qquickflickable_p.h>
11#if QT_CONFIG(accessibility)
13QAccessibleQuickFlickable::QAccessibleQuickFlickable(QQuickFlickable *flickable)
14 : QAccessibleQuickItem(flickable)
18QSizeF QAccessibleQuickFlickable::contentSize()
const
20 if (
auto *f = flickable())
21 return { f->contentWidth(), f->contentHeight() };
26QPointF QAccessibleQuickFlickable::position()
const
28 if (
auto *f = flickable()) {
29 const qreal contentWidth = f->contentWidth();
30 const qreal contentHeight = f->contentHeight();
32 if (contentWidth == 0 || contentHeight == 0)
38 const qreal effectiveXPosition = f->contentX() + f->leftMargin() + f->originX();
39 const qreal effectiveYPosition = f->contentY() + f->topMargin() + f->originY();
40 return { effectiveXPosition / contentWidth, effectiveYPosition / contentHeight };
46QSizeF QAccessibleQuickFlickable::viewportSize()
const
48 if (
auto *f = flickable()) {
49 const qreal contentWidth = f->contentWidth();
50 const qreal contentHeight = f->contentHeight();
52 if (contentWidth == 0 || contentHeight == 0)
55 const qreal effectiveWidth = f->width() - f->leftMargin() - f->rightMargin();
56 const qreal effectiveHeight = f->height() - f->topMargin() - f->bottomMargin();
57 return { std::min(1.0, effectiveWidth / contentWidth),
58 std::min(1.0, effectiveHeight / contentHeight) };
64bool QAccessibleQuickFlickable::isIndexed()
const
69void QAccessibleQuickFlickable::setPosition(
const QPointF &position)
71 if (
auto *f = flickable()) {
72 const qreal contentWidth = f->contentWidth();
73 const qreal contentHeight = f->contentHeight();
75 if (contentWidth == 0 || contentHeight == 0) {
81 f->setContentX(position.x() * contentWidth - f->leftMargin() - f->originX());
82 f->setContentY(position.y() * contentHeight - f->topMargin() - f->originY());
86void *QAccessibleQuickFlickable::interface_cast(QAccessible::InterfaceType t)
88 if (t == QAccessible::ViewportInterface)
89 return static_cast<QAccessibleViewportInterface *>(
this);
91 return QAccessibleQuickItem::interface_cast(t);
94QQuickFlickable *QAccessibleQuickFlickable::flickable()
const
96 return qobject_cast<QQuickFlickable *>(object());