Bläddra i källkod

LibWeb: Don't assume we hit a layout node when handling mousedown events

Regression from the introduction of CSS pointer-events in
ec43f7a2b0840a97c6d093066750dd28840d9587.
Andreas Kling 3 år sedan
förälder
incheckning
fcff6b7160
1 ändrade filer med 6 tillägg och 7 borttagningar
  1. 6 7
      Userland/Libraries/LibWeb/Page/EventHandler.cpp

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

@@ -184,19 +184,18 @@ bool EventHandler::handle_mousedown(const Gfx::IntPoint& position, unsigned butt
     }
 
     NonnullRefPtr document = *m_frame.active_document();
-
-    // TODO: Allow selecting element behind if one on top has pointer-events set to none.
-    auto result = layout_root()->hit_test(position, Layout::HitTestType::Exact);
-    auto pointer_events = result.layout_node->computed_values().pointer_events();
-    if (pointer_events == CSS::PointerEvents::None)
-        return false;
-
     RefPtr<DOM::Node> node;
 
     {
+        // TODO: Allow selecting element behind if one on top has pointer-events set to none.
+        auto result = layout_root()->hit_test(position, Layout::HitTestType::Exact);
         if (!result.layout_node)
             return false;
 
+        auto pointer_events = result.layout_node->computed_values().pointer_events();
+        if (pointer_events == CSS::PointerEvents::None)
+            return false;
+
         node = result.layout_node->dom_node();
         document->set_hovered_node(node);