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