QskPopup key handling added

This commit is contained in:
Uwe Rathmann 2023-10-25 10:07:38 +02:00
parent 346aff98d1
commit 83df3ad8da
6 changed files with 27 additions and 83 deletions

View File

@ -32,7 +32,7 @@ static inline qreal qskDefaultDragMargin()
return QGuiApplication::styleHints()->startDragDistance();
}
static void qskCatchMouseEvents( QQuickItem* item )
static inline void qskCatchMouseEvents( QQuickItem* item )
{
#if 1
// manipulating other items - do we really want to do this ?
@ -352,64 +352,6 @@ qreal QskDrawer::dragMargin() const
return m_data->dragMargin;
}
void QskDrawer::keyPressEvent( QKeyEvent* event )
{
if ( isOpen() )
{
bool doClose = false;
const auto key = event->key();
switch( key )
{
case Qt::Key_Escape:
case Qt::Key_Cancel:
{
doClose = true;
break;
}
#if 0
/*
Do we want to have this - and what about opening with
the same keys ???
*/
case Qt::Key_Up:
case Qt::Key_Down:
case Qt::Key_Left:
case Qt::Key_Right:
{
switch( m_data->edge )
{
case Qt::TopEdge:
doClose = ( key == Qt::Key_Up );
break;
case Qt::BottomEdge:
doClose = ( key == Qt::Key_Down );
break;
case Qt::LeftEdge:
doClose = ( key == Qt::Key_Left );
break;
case Qt::RightEdge:
doClose = ( key == Qt::Key_Right );
break;
}
break;
}
#endif
}
if ( doClose )
{
close();
return;
}
}
Inherited::keyPressEvent( event );
}
void QskDrawer::gestureEvent( QskGestureEvent* event )
{
if ( event->gesture()->type() == QskGesture::Pan )

View File

@ -52,7 +52,6 @@ class QSK_EXPORT QskDrawer : public QskPopup
protected:
void itemChange( ItemChange, const ItemChangeData& ) override;
void gestureEvent( QskGestureEvent* ) override;
void keyPressEvent( QKeyEvent* ) override;
private:
void setSliding( bool );

View File

@ -268,20 +268,18 @@ void QskMenu::keyPressEvent( QKeyEvent* event )
if( m_data->currentIndex < 0 )
return;
int key = event->key();
switch( key )
switch( event->key() )
{
case Qt::Key_Up:
{
traverse( -1 );
break;
return;
}
case Qt::Key_Down:
{
traverse( 1 );
break;
return;
}
case Qt::Key_Select:
@ -293,19 +291,17 @@ void QskMenu::keyPressEvent( QKeyEvent* event )
return;
}
case Qt::Key_Escape:
case Qt::Key_Cancel:
{
close();
return;
}
default:
{
if ( const int steps = qskFocusChainIncrement( event ) )
{
traverse( steps );
return;
}
}
}
return Inherited::keyPressEvent( event );
}
void QskMenu::keyReleaseEvent( QKeyEvent* )

View File

@ -472,10 +472,10 @@ bool QskPopup::event( QEvent* event )
}
case QskEvent::Animator:
{
const auto animtorEvent = static_cast< QskAnimatorEvent* >( event );
const auto animatorEvent = static_cast< QskAnimatorEvent* >( event );
if ( ( animtorEvent->state() == QskAnimatorEvent::Terminated )
&& ( animtorEvent->aspect() == m_data->transitionAspect ) )
if ( ( animatorEvent->state() == QskAnimatorEvent::Terminated )
&& ( animatorEvent->aspect() == m_data->transitionAspect ) )
{
if ( !isOpen() )
{
@ -507,6 +507,17 @@ bool QskPopup::event( QEvent* event )
return ok;
}
void QskPopup::keyPressEvent( QKeyEvent* event )
{
if ( qskIsStandardKeyInput( event, QKeySequence::Cancel ) )
{
close();
return;
}
return Inherited::keyPressEvent( event );
}
void QskPopup::focusInEvent( QFocusEvent* event )
{
Inherited::focusInEvent( event );

View File

@ -91,6 +91,7 @@ class QSK_EXPORT QskPopup : public QskControl
bool event( QEvent* ) override;
void focusInEvent( QFocusEvent* ) override;
void focusOutEvent( QFocusEvent* ) override;
void keyPressEvent( QKeyEvent* ) override;
void windowChangeEvent( QskWindowChangeEvent* ) override;
void itemChange( QQuickItem::ItemChange,

View File

@ -278,15 +278,10 @@ void QskDialogSubWindow::keyPressEvent( QKeyEvent* event )
{
auto button = m_data->buttonBox->defaultButton();
if ( button && button->isEnabled() )
{
button->click();
}
if ( qskIsStandardKeyInput( event, QKeySequence::Cancel ) )
{
// using shortcuts instead ???
reject();
return;
return;
}
}
Inherited::keyPressEvent( event );