19#include <QGuiApplication>
48 return m_path.contains(point);
53 return m_path.intersects(rect);
59 , m_containsMouse(false)
63 setAcceptHoverEvents(
true);
64 setAcceptedMouseButtons(Qt::LeftButton);
106 if (qFuzzyCompare(m_tolerance,
tolerance)) {
110 m_tolerance = qMax(
tolerance, qreal(0.0));
117 return QQuickItem::contains(point);
120 const QRectF rect = boundingRect();
121 const bool ignoreBoundingRect = rect.isEmpty();
122 if (m_tolerance > 0.) {
123 const QRectF fuzzyClickRect(point.x() - m_tolerance, point.y() - m_tolerance,
124 2 * m_tolerance, 2 * m_tolerance);
125 if (!ignoreBoundingRect && !rect.intersects(fuzzyClickRect)) {
131 if (!ignoreBoundingRect && !rect.contains(point)) {
140 m_pressPoint =
event->pos();
150 const int threshold = qApp->styleHints()->startDragDistance();
151#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
152 const int eventX =
static_cast<int>(
event->position().x());
153 const int eventY =
static_cast<int>(
event->position().y());
155 const int eventX =
event->x();
156 const int eventY =
event->y();
158 const bool isClick = (threshold >= qAbs(eventX - m_pressPoint.x()) && threshold >= qAbs(eventY - m_pressPoint.y()));
virtual bool intersects(const QRectF &rect) const =0
AbstractMask(QObject *parent=nullptr)
virtual bool contains(const QPointF &point) const =0
bool intersects(const QRectF &rect) const override
void pathChanged(const QPainterPath &path)
PainterPathMask(QObject *parent=nullptr)
bool contains(const QPointF &point) const override
void setPath(const QPainterPath &path)
bool contains(const QPointF &point) const override
void mousePressEvent(QMouseEvent *event) override
void toleranceChanged(qreal tolerance)
void hoverLeaveEvent(QHoverEvent *event) override
void containsMouseChanged(bool containsMouse)
QuickMaskedMouseArea(QQuickItem *parent=nullptr)
void hoverEnterEvent(QHoverEvent *event) override
void pressedChanged(bool pressed)
void mouseReleaseEvent(QMouseEvent *event) override
void setTolerance(qreal tolerance)
void setPressed(bool pressed)
void setMask(AbstractMask *mask)
void mouseUngrabEvent() override
void setContainsMouse(bool containsMouse)
void maskChanged(AbstractMask *mask)