keyboard: Differentiate between pressed and clicked

For pressed, we want to make use of the auto repeat feature,
in contrast to the clicked case.
This commit is contained in:
Peter Hartmann 2023-06-01 08:58:04 +02:00
parent 9e4e31f349
commit 76742dd0e5
2 changed files with 27 additions and 1 deletions

View File

@ -383,6 +383,9 @@ void QskVirtualKeyboard::ensureButtons()
connect( button, &QskPushButton::pressed,
this, &QskVirtualKeyboard::buttonPressed );
connect( button, &QskPushButton::clicked,
this, &QskVirtualKeyboard::buttonClicked );
m_data->keyButtons += button;
}
}
@ -398,8 +401,28 @@ void QskVirtualKeyboard::ensureButtons()
void QskVirtualKeyboard::buttonPressed()
{
const auto button = static_cast< const Button* >( sender() );
if ( button == nullptr )
{
return;
}
const int key = button->key();
if( qskIsAutorepeat( key ) )
{
Q_EMIT keySelected( key );
}
}
void QskVirtualKeyboard::buttonClicked()
{
auto button = static_cast< Button* >( sender() );
if( button == nullptr )
{
return;
}
const int key = button->key();
@ -428,9 +451,10 @@ void QskVirtualKeyboard::buttonPressed()
break;
}
default:
{
Q_EMIT keySelected( key );
break;
}
}
}

View File

@ -107,6 +107,8 @@ class QSK_EXPORT QskVirtualKeyboard : public QskBox
private:
void ensureButtons();
void buttonPressed();
void buttonClicked();
void updateKeyCodes();
QskPushButton::Emphasis emphasisForType( KeyType );