QskGestureRecognizer improvements

This commit is contained in:
Uwe Rathmann 2023-10-11 09:18:09 +02:00
parent 2e980f087d
commit 208865ba8d
4 changed files with 16 additions and 14 deletions

View File

@ -229,19 +229,17 @@ namespace
} }
{ {
auto drawer = new Drawer( parentItem() );
drawer->setEdge( Qt::RightEdge );
auto burger = new QskPushButton( "", this ); auto burger = new QskPushButton( "", this );
burger->setEmphasis( QskPushButton::LowEmphasis ); burger->setEmphasis( QskPushButton::LowEmphasis );
connect( burger, &QskPushButton::clicked, connect( burger, &QskPushButton::clicked,
drawer, &QskPopup::open ); this, &Header::drawerRequested );
} }
} }
Q_SIGNALS: Q_SIGNALS:
void enabledToggled( bool ); void enabledToggled( bool );
void drawerRequested();
}; };
class MainView : public QskMainView class MainView : public QskMainView
@ -264,6 +262,12 @@ namespace
connect( header, &Header::enabledToggled, connect( header, &Header::enabledToggled,
tabView, &TabView::setPagesEnabled ); tabView, &TabView::setPagesEnabled );
auto drawer = new Drawer( this );
drawer->setEdge( Qt::RightEdge );
connect( header, &Header::drawerRequested,
drawer, &QskPopup::open );
setHeader( header ); setHeader( header );
setBody( tabView ); setBody( tabView );
} }

View File

@ -142,12 +142,9 @@ Qt::MouseButtons QskGestureRecognizer::acceptedMouseButtons() const
return m_data->buttons; return m_data->buttons;
} }
QRectF QskGestureRecognizer::gestureRect() const bool QskGestureRecognizer::isAcceptedPos( const QPointF& pos ) const
{ {
if ( m_data->watchedItem ) return m_data->watchedItem && m_data->watchedItem->contains( pos );
return qskItemRect( m_data->watchedItem );
return QRectF( 0.0, 0.0, -1.0, -1.0 );
} }
void QskGestureRecognizer::setRejectOnTimeout( bool on ) void QskGestureRecognizer::setRejectOnTimeout( bool on )
@ -313,7 +310,7 @@ bool QskGestureRecognizer::processMouseEvent(
if ( event->type() == QEvent::MouseButtonPress ) if ( event->type() == QEvent::MouseButtonPress )
{ {
if ( !gestureRect().contains( pos ) ) if ( !isAcceptedPos( pos ) )
return false; return false;
if ( m_data->state != Idle ) if ( m_data->state != Idle )

View File

@ -22,6 +22,7 @@ class QSK_EXPORT QskGestureRecognizer : public QObject
Q_PROPERTY( State state READ state NOTIFY stateChanged ) Q_PROPERTY( State state READ state NOTIFY stateChanged )
Q_PROPERTY( QQuickItem* watchedItem READ watchedItem WRITE setWatchedItem ) Q_PROPERTY( QQuickItem* watchedItem READ watchedItem WRITE setWatchedItem )
Q_PROPERTY( QQuickItem* targetItem READ targetItem WRITE setTargetItem )
Q_PROPERTY( Qt::MouseButtons acceptedMouseButtons Q_PROPERTY( Qt::MouseButtons acceptedMouseButtons
READ acceptedMouseButtons WRITE setAcceptedMouseButtons ) READ acceptedMouseButtons WRITE setAcceptedMouseButtons )
@ -72,7 +73,7 @@ class QSK_EXPORT QskGestureRecognizer : public QObject
State state() const; State state() const;
virtual QRectF gestureRect() const; virtual bool isAcceptedPos( const QPointF& ) const;
Q_SIGNALS: Q_SIGNALS:
void stateChanged( State from, State to ); void stateChanged( State from, State to );

View File

@ -136,15 +136,15 @@ namespace
setOrientations( Qt::Horizontal | Qt::Vertical ); setOrientations( Qt::Horizontal | Qt::Vertical );
} }
QRectF gestureRect() const override bool isAcceptedPos( const QPointF& pos ) const override
{ {
if ( auto scrollBox = qobject_cast< const QskScrollBox* >( watchedItem() ) ) if ( auto scrollBox = qobject_cast< const QskScrollBox* >( watchedItem() ) )
{ {
if ( qskIsScrollable( scrollBox, orientations() ) ) if ( qskIsScrollable( scrollBox, orientations() ) )
return scrollBox->viewContentsRect(); return scrollBox->viewContentsRect().contains( pos );
} }
return QRectF( 0.0, 0.0, -1.0, -1.0 ); // empty return false;
} }
}; };
} }