1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 23:17:45 +00:00

LibGUI+WindowServer: Replace WindowInput{Enter,Leave} Events

with WindowInput{Preempted,Restored} Events and allow Widgets to save
the state of their focus preemption. As of now, only Popups will
preempt input and trigger these events.
This commit is contained in:
thankyouverycool 2022-11-17 08:39:20 -05:00 committed by Andreas Kling
parent 901878bad9
commit 5d567565a4
11 changed files with 50 additions and 45 deletions

View file

@ -1828,20 +1828,6 @@ Window* WindowManager::set_active_input_window(Window* window)
return previous_input_window;
}
void WindowManager::notify_new_active_input_window(Window& new_input_window)
{
Core::EventLoop::current().post_event(new_input_window, make<Event>(Event::WindowInputEntered));
if (new_input_window.is_capturing_input() && !new_input_window.is_frameless())
new_input_window.invalidate(true, true);
}
void WindowManager::notify_previous_active_input_window(Window& previous_input_window)
{
Core::EventLoop::current().post_event(previous_input_window, make<Event>(Event::WindowInputLeft));
if (previous_input_window.is_capturing_input() && !previous_input_window.is_frameless())
previous_input_window.invalidate(true, true);
}
void WindowManager::set_active_window(Window* new_active_window, bool make_input)
{
if (new_active_window) {
@ -1905,6 +1891,18 @@ void WindowManager::notify_previous_active_window(Window& previously_active_wind
tell_wms_window_state_changed(previously_active_window);
}
void WindowManager::notify_active_window_input_preempted()
{
if (active_window())
Core::EventLoop::current().post_event(*active_window(), make<Event>(Event::WindowInputPreempted));
}
void WindowManager::notify_active_window_input_restored()
{
if (active_window())
Core::EventLoop::current().post_event(*active_window(), make<Event>(Event::WindowInputRestored));
}
bool WindowManager::set_hovered_window(Window* window)
{
if (m_hovered_window == window)