qskinny/src/controls/QskGestureRecognizer.h
Uwe Rathmann b80aed9c92 - QskGestureRecognizer replaying all mouse events, when being aborted.
- QskScrollView gesture handling improved to handle replayed events from children that actively ignore mouse events
2018-01-11 14:16:20 +01:00

68 lines
1.5 KiB
C++

/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_GESTURE_RECOGNIZER_H
#define QSK_GESTURE_RECOGNIZER_H
#include "QskGlobal.h"
#include <Qt>
#include <memory>
class QQuickItem;
class QEvent;
class QMouseEvent;
class QSK_EXPORT QskGestureRecognizer
{
public:
enum State
{
Idle,
Pending,
Accepted
};
QskGestureRecognizer();
virtual ~QskGestureRecognizer();
void setWatchedItem( QQuickItem* );
QQuickItem* watchedItem() const;
// Qt::NoButton means: all buttons accepted
void setAcceptedMouseButtons( Qt::MouseButtons );
Qt::MouseButtons acceptedMouseButtons() const;
void setTimeout( int );
int timeout() const;
ulong timestamp() const;
bool processEvent( QQuickItem*, QEvent*, bool blockReplayedEvents = true );
void reject();
void accept();
void abort();
State state() const;
bool isReplaying() const;
protected:
virtual void pressEvent( const QMouseEvent* );
virtual void moveEvent( const QMouseEvent* );
virtual void releaseEvent( const QMouseEvent* );
virtual void stateChanged( State from, State to );
private:
void setState( State );
void reset();
class PrivateData;
std::unique_ptr< PrivateData > m_data;
};
#endif