LibGUI: Make focus events more aware of why focus is changing

This patch adds GUI::FocusEvent which has a GUI::FocusSource.
The focus source is one of three things:

- Programmatic
- Mouse
- Keyboard

This allows receivers of focus events to implement different behaviors
depending on how they receive/lose focus.
This commit is contained in:
Andreas Kling 2020-08-14 19:56:40 +02:00
commit 75b8f4e4e6
Notes: sideshowbarker 2024-07-19 03:38:10 +09:00
14 changed files with 94 additions and 41 deletions

View file

@ -181,13 +181,13 @@ void TerminalWidget::set_logical_focus(bool focus)
update();
}
void TerminalWidget::focusin_event(Core::Event& event)
void TerminalWidget::focusin_event(GUI::FocusEvent& event)
{
set_logical_focus(true);
return GUI::Frame::focusin_event(event);
}
void TerminalWidget::focusout_event(Core::Event& event)
void TerminalWidget::focusout_event(GUI::FocusEvent& event)
{
set_logical_focus(false);
return GUI::Frame::focusout_event(event);