1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:38:11 +00:00

LibGUI: Show pressed state for Space and Return key events

Also allows the user to press Esc while the button is being pressed
to cancel the button action.
This commit is contained in:
Matthew Jones 2021-06-02 15:59:08 -06:00 committed by Linus Groh
parent 6fe7d4d7b8
commit af72b5ec82
2 changed files with 18 additions and 1 deletions

View file

@ -146,13 +146,29 @@ void AbstractButton::leave_event(Core::Event&)
void AbstractButton::keydown_event(KeyEvent& event)
{
if (event.key() == KeyCode::Key_Return || event.key() == KeyCode::Key_Space) {
click(event.modifiers());
m_being_pressed = true;
update();
event.accept();
return;
} else if (m_being_pressed && event.key() == KeyCode::Key_Escape) {
m_being_pressed = false;
update();
event.accept();
return;
}
Widget::keydown_event(event);
}
void AbstractButton::keyup_event(KeyEvent& event)
{
if (m_being_pressed && (event.key() == KeyCode::Key_Return || event.key() == KeyCode::Key_Space)) {
click(event.modifiers());
event.accept();
return;
}
Widget::keyup_event(event);
}
void AbstractButton::paint_text(Painter& painter, const Gfx::IntRect& rect, const Gfx::Font& font, Gfx::TextAlignment text_alignment)
{
auto clipped_rect = rect.intersected(this->rect());