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:
parent
6fe7d4d7b8
commit
af72b5ec82
2 changed files with 18 additions and 1 deletions
|
@ -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());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue