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,13 +196,17 @@ 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() );
if ( !drawer->isOpen() )
{
const auto dragMargin = drawer->dragMargin();
if ( dragMargin <= 0.0 )
return false;
switch( drawer->edge() ) switch( drawer->edge() )
{ {
case Qt::LeftEdge: case Qt::LeftEdge:
@ -221,6 +225,7 @@ namespace
rect.setTop( rect.bottom() - dragMargin ); rect.setTop( rect.bottom() - dragMargin );
break; 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;