diff --git a/src/controls/QskDrawer.cpp b/src/controls/QskDrawer.cpp index 3b965e36..4793cdab 100644 --- a/src/controls/QskDrawer.cpp +++ b/src/controls/QskDrawer.cpp @@ -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 ) diff --git a/src/controls/QskDrawer.h b/src/controls/QskDrawer.h index de02b435..f8aada41 100644 --- a/src/controls/QskDrawer.h +++ b/src/controls/QskDrawer.h @@ -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 ); diff --git a/src/controls/QskMenu.cpp b/src/controls/QskMenu.cpp index 43ed0a1f..ba86d66c 100644 --- a/src/controls/QskMenu.cpp +++ b/src/controls/QskMenu.cpp @@ -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* ) diff --git a/src/controls/QskPopup.cpp b/src/controls/QskPopup.cpp index 3d680049..d993cc51 100644 --- a/src/controls/QskPopup.cpp +++ b/src/controls/QskPopup.cpp @@ -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 ); diff --git a/src/controls/QskPopup.h b/src/controls/QskPopup.h index f811a26d..ff1201b2 100644 --- a/src/controls/QskPopup.h +++ b/src/controls/QskPopup.h @@ -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, diff --git a/src/dialogs/QskDialogSubWindow.cpp b/src/dialogs/QskDialogSubWindow.cpp index 69e84ffb..5643fec7 100644 --- a/src/dialogs/QskDialogSubWindow.cpp +++ b/src/dialogs/QskDialogSubWindow.cpp @@ -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 );