summaryrefslogtreecommitdiff
path: root/Userland/Services/WindowServer/WindowManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Services/WindowServer/WindowManager.cpp')
-rw-r--r--Userland/Services/WindowServer/WindowManager.cpp23
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()));