diff options
Diffstat (limited to 'Userland/Services/WindowServer/WindowManager.cpp')
-rw-r--r-- | Userland/Services/WindowServer/WindowManager.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/Userland/Services/WindowServer/WindowManager.cpp b/Userland/Services/WindowServer/WindowManager.cpp index 274ed411c0..9e942ec4db 100644 --- a/Userland/Services/WindowServer/WindowManager.cpp +++ b/Userland/Services/WindowServer/WindowManager.cpp @@ -950,20 +950,11 @@ bool WindowManager::process_mouse_event_for_titlebar_buttons(MouseEvent const& e void WindowManager::process_mouse_event_for_window(HitTestResult& result, MouseEvent const& event) { auto& window = *result.window; - - if (auto* blocking_modal_window = window.blocking_modal_window()) { - if (event.type() == Event::Type::MouseDown) { - // We're clicking on something that's blocked by a modal window. - // Flash the modal window to let the user know about it. - blocking_modal_window->frame().start_flash_animation(); - } - // Don't send mouse events to windows blocked by a modal child. - return; - } + auto* blocking_modal_window = window.blocking_modal_window(); // First check if we should initiate a move or resize (Super+LMB or Super+RMB). // In those cases, the event is swallowed by the window manager. - if (window.is_movable()) { + if (!blocking_modal_window && window.is_movable()) { if (!window.is_fullscreen() && m_keyboard_modifiers == Mod_Super && event.type() == Event::MouseDown && event.button() == MouseButton::Left) { start_window_move(window, event); return; @@ -981,6 +972,16 @@ void WindowManager::process_mouse_event_for_window(HitTestResult& result, MouseE set_active_window(&window); } + if (blocking_modal_window) { + if (event.type() == Event::Type::MouseDown) { + // We're clicking on something that's blocked by a modal window. + // Flash the modal window to let the user know about it. + blocking_modal_window->frame().start_flash_animation(); + } + // Don't send mouse events to windows blocked by a modal child. + return; + } + if (result.is_frame_hit) { // We are hitting the frame, pass the event along to WindowFrame. window.frame().handle_mouse_event(event.translated(-window.frame().rect().location())); |