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

View File

@ -142,12 +142,9 @@ Qt::MouseButtons QskGestureRecognizer::acceptedMouseButtons() const
return m_data->buttons;
}
QRectF QskGestureRecognizer::gestureRect() const
bool QskGestureRecognizer::isAcceptedPos( const QPointF& pos ) const
{
if ( m_data->watchedItem )
return qskItemRect( m_data->watchedItem );
return QRectF( 0.0, 0.0, -1.0, -1.0 );
return m_data->watchedItem && m_data->watchedItem->contains( pos );
}
void QskGestureRecognizer::setRejectOnTimeout( bool on )
@ -313,7 +310,7 @@ bool QskGestureRecognizer::processMouseEvent(
if ( event->type() == QEvent::MouseButtonPress )
{
if ( !gestureRect().contains( pos ) )
if ( !isAcceptedPos( pos ) )
return false;
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( QQuickItem* watchedItem READ watchedItem WRITE setWatchedItem )
Q_PROPERTY( QQuickItem* targetItem READ targetItem WRITE setTargetItem )
Q_PROPERTY( Qt::MouseButtons acceptedMouseButtons
READ acceptedMouseButtons WRITE setAcceptedMouseButtons )
@ -72,7 +73,7 @@ class QSK_EXPORT QskGestureRecognizer : public QObject
State state() const;
virtual QRectF gestureRect() const;
virtual bool isAcceptedPos( const QPointF& ) const;
Q_SIGNALS:
void stateChanged( State from, State to );

View File

@ -136,15 +136,15 @@ namespace
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 ( qskIsScrollable( scrollBox, orientations() ) )
return scrollBox->viewContentsRect();
return scrollBox->viewContentsRect().contains( pos );
}
return QRectF( 0.0, 0.0, -1.0, -1.0 ); // empty
return false;
}
};
}