gesture also used for closing

This commit is contained in:
Uwe Rathmann 2023-10-17 16:37:25 +02:00
parent 930cb321a1
commit 79924aeebe
1 changed files with 24 additions and 18 deletions

View File

@ -196,30 +196,35 @@ namespace
bool isAcceptedPos( const QPointF& pos ) const override bool isAcceptedPos( const QPointF& pos ) const override
{ {
auto drawer = qobject_cast< const QskDrawer* >( targetItem() ); auto drawer = qobject_cast< const QskDrawer* >( targetItem() );
if ( drawer->isFading() )
const auto dragMargin = drawer->dragMargin();
if ( dragMargin <= 0.0 )
return false; return false;
auto rect = qskItemRect( watchedItem() ); auto rect = qskItemRect( watchedItem() );
switch( drawer->edge() ) if ( !drawer->isOpen() )
{ {
case Qt::LeftEdge: const auto dragMargin = drawer->dragMargin();
rect.setRight( rect.left() + dragMargin ); if ( dragMargin <= 0.0 )
break; return false;
case Qt::RightEdge: switch( drawer->edge() )
rect.setLeft( rect.right() - dragMargin ); {
break; case Qt::LeftEdge:
rect.setRight( rect.left() + dragMargin );
break;
case Qt::TopEdge: case Qt::RightEdge:
rect.setBottom( rect.top() + dragMargin ); rect.setLeft( rect.right() - dragMargin );
break; break;
case Qt::BottomEdge: case Qt::TopEdge:
rect.setTop( rect.bottom() - dragMargin ); rect.setBottom( rect.top() + dragMargin );
break; break;
case Qt::BottomEdge:
rect.setTop( rect.bottom() - dragMargin );
break;
}
} }
return rect.contains( pos ); return rect.contains( pos );
@ -324,8 +329,9 @@ void QskDrawer::gestureEvent( QskGestureEvent* event )
const auto gesture = static_cast< const QskPanGesture* >( event->gesture().get() ); const auto gesture = static_cast< const QskPanGesture* >( event->gesture().get() );
if ( gesture->state() == QskGesture::Finished ) if ( gesture->state() == QskGesture::Finished )
{ {
if ( qskCheckDirection( m_data->edge, gesture ) ) const auto forwards = qskCheckDirection( m_data->edge, gesture );
open(); if ( forwards != isOpen() )
setOpen( forwards );
} }
return; return;