File indexing completed on 2024-05-19 15:09:24
0001 /* 0002 SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org> 0003 SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include <QPointer> 0011 #include <QQuickItem> 0012 0013 class FallbackTapHandlerMouseEvent : public QObject 0014 { 0015 Q_OBJECT 0016 Q_PROPERTY(Qt::MouseButton button MEMBER m_button) 0017 Q_PROPERTY(Qt::MouseButtons buttons MEMBER m_buttons) 0018 Q_PROPERTY(Qt::KeyboardModifiers modifiers MEMBER m_modifiers) 0019 Q_PROPERTY(qreal x MEMBER m_x) 0020 Q_PROPERTY(qreal y MEMBER m_y) 0021 0022 public: 0023 FallbackTapHandlerMouseEvent(Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, qreal x, qreal y); 0024 ~FallbackTapHandlerMouseEvent() override = default; 0025 0026 private: 0027 Qt::MouseButton m_button = Qt::NoButton; 0028 Qt::MouseButtons m_buttons = Qt::NoButton; 0029 Qt::KeyboardModifiers m_modifiers = Qt::NoModifier; 0030 qreal m_x = 0; 0031 qreal m_y = 0; 0032 }; 0033 0034 class FallbackTapHandler : public QQuickItem 0035 { 0036 Q_OBJECT 0037 Q_PROPERTY(Qt::MouseButtons acceptedButtons READ acceptedMouseButtons WRITE setAcceptedButtons NOTIFY acceptedButtonsChanged) 0038 0039 public: 0040 explicit FallbackTapHandler(QQuickItem *parent = nullptr); 0041 ~FallbackTapHandler() override; 0042 0043 void setAcceptedButtons(Qt::MouseButtons buttons); 0044 0045 Q_SIGNALS: 0046 void pressed(FallbackTapHandlerMouseEvent *event); 0047 void tapped(FallbackTapHandlerMouseEvent *event); 0048 void released(FallbackTapHandlerMouseEvent *event); 0049 void acceptedButtonsChanged(); 0050 0051 protected: 0052 bool childMouseEventFilter(QQuickItem *item, QEvent *event) override; 0053 void mousePressEvent(QMouseEvent *event) override; 0054 void mouseReleaseEvent(QMouseEvent *event) override; 0055 0056 private: 0057 QPointer<QQuickItem> m_mouseDownItem; 0058 QPointF m_mouseDownPos; 0059 };