LibGUI: Close and cancel GDialog on escape

This is a small usability enhancement. If you press escape with a GDialog
focused, it will now return its "Cancel" status.
This commit is contained in:
Conrad Pankoff 2020-01-01 11:58:37 +11:00 committed by Andreas Kling
parent 8602fa5b49
commit 3d59db4be4
Notes: sideshowbarker 2024-07-19 10:29:49 +09:00
2 changed files with 16 additions and 0 deletions

View file

@ -1,5 +1,6 @@
#include <LibGUI/GDesktop.h>
#include <LibGUI/GDialog.h>
#include <LibGUI/GEvent.h>
GDialog::GDialog(CObject* parent)
: GWindow(parent)
@ -40,6 +41,19 @@ void GDialog::done(int result)
m_event_loop->quit(result);
}
void GDialog::event(CEvent& event)
{
if (event.type() == GEvent::KeyUp) {
auto& key_event = static_cast<GKeyEvent&>(event);
if (key_event.key() == KeyCode::Key_Escape) {
done(ExecCancel);
return;
}
}
GWindow::event(event);
}
void GDialog::close()
{
GWindow::close();

View file

@ -19,6 +19,8 @@ public:
int result() const { return m_result; }
void done(int result);
virtual void event(CEvent&) override;
virtual void close() override;
protected: