Procházet zdrojové kódy

LibWeb: Allow JS event handlers to stop propagation of mousemove events

This follows similar logic to keydown events.
Timothy Flynn před 1 rokem
rodič
revize
1d03301037
1 změnil soubory, kde provedl 6 přidání a 1 odebrání
  1. 6 1
      Userland/Libraries/LibWeb/Page/EventHandler.cpp

+ 6 - 1
Userland/Libraries/LibWeb/Page/EventHandler.cpp

@@ -503,8 +503,13 @@ bool EventHandler::handle_mousemove(CSSPixelPoint position, CSSPixelPoint screen
             auto client_offset = compute_mouse_event_client_offset(position);
             auto page_offset = compute_mouse_event_page_offset(client_offset);
             auto movement = compute_mouse_event_movement(screen_position);
-            node->dispatch_event(UIEvents::MouseEvent::create_from_platform_event(node->realm(), UIEvents::EventNames::mousemove, screen_position, page_offset, client_offset, offset, movement, 1, buttons, modifiers).release_value_but_fixme_should_propagate_errors());
+
             m_mousemove_previous_screen_position = screen_position;
+
+            bool continue_ = node->dispatch_event(UIEvents::MouseEvent::create_from_platform_event(node->realm(), UIEvents::EventNames::mousemove, screen_position, page_offset, client_offset, offset, movement, 1, buttons, modifiers).release_value_but_fixme_should_propagate_errors());
+            if (!continue_)
+                return false;
+
             // NOTE: Dispatching an event may have disturbed the world.
             if (!paint_root() || paint_root() != node->document().paintable_box())
                 return true;