mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:57:44 +00:00
LibWeb: Ignore "pointer-events: none" elements in hit_test
This commit is contained in:
parent
f39b6ae3c6
commit
dfc3a4772b
2 changed files with 6 additions and 6 deletions
|
@ -280,7 +280,6 @@ bool EventHandler::handle_mousedown(Gfx::IntPoint const& position, unsigned butt
|
||||||
JS::GCPtr<DOM::Node> node;
|
JS::GCPtr<DOM::Node> node;
|
||||||
|
|
||||||
{
|
{
|
||||||
// TODO: Allow selecting element behind if one on top has pointer-events set to none.
|
|
||||||
RefPtr<Painting::Paintable> paintable;
|
RefPtr<Painting::Paintable> paintable;
|
||||||
if (m_mouse_event_tracking_layout_node) {
|
if (m_mouse_event_tracking_layout_node) {
|
||||||
paintable = m_mouse_event_tracking_layout_node->paintable();
|
paintable = m_mouse_event_tracking_layout_node->paintable();
|
||||||
|
@ -293,8 +292,7 @@ bool EventHandler::handle_mousedown(Gfx::IntPoint const& position, unsigned butt
|
||||||
|
|
||||||
auto pointer_events = paintable->computed_values().pointer_events();
|
auto pointer_events = paintable->computed_values().pointer_events();
|
||||||
// FIXME: Handle other values for pointer-events.
|
// FIXME: Handle other values for pointer-events.
|
||||||
if (pointer_events == CSS::PointerEvents::None)
|
VERIFY(pointer_events != CSS::PointerEvents::None);
|
||||||
return false;
|
|
||||||
|
|
||||||
node = paintable->mouse_event_target();
|
node = paintable->mouse_event_target();
|
||||||
if (!node)
|
if (!node)
|
||||||
|
@ -414,8 +412,7 @@ bool EventHandler::handle_mousemove(Gfx::IntPoint const& position, unsigned butt
|
||||||
|
|
||||||
auto pointer_events = paintable->computed_values().pointer_events();
|
auto pointer_events = paintable->computed_values().pointer_events();
|
||||||
// FIXME: Handle other values for pointer-events.
|
// FIXME: Handle other values for pointer-events.
|
||||||
if (pointer_events == CSS::PointerEvents::None)
|
VERIFY(pointer_events != CSS::PointerEvents::None);
|
||||||
return false;
|
|
||||||
|
|
||||||
hovered_node_changed = node.ptr() != document.hovered_node();
|
hovered_node_changed = node.ptr() != document.hovered_node();
|
||||||
document.set_hovered_node(node);
|
document.set_hovered_node(node);
|
||||||
|
@ -497,7 +494,6 @@ bool EventHandler::handle_doubleclick(Gfx::IntPoint const& position, unsigned bu
|
||||||
if (!paint_root())
|
if (!paint_root())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// TODO: Allow selecting element behind if one on top has pointer-events set to none.
|
|
||||||
RefPtr<Painting::Paintable> paintable;
|
RefPtr<Painting::Paintable> paintable;
|
||||||
if (m_mouse_event_tracking_layout_node) {
|
if (m_mouse_event_tracking_layout_node) {
|
||||||
paintable = m_mouse_event_tracking_layout_node->paintable();
|
paintable = m_mouse_event_tracking_layout_node->paintable();
|
||||||
|
|
|
@ -379,6 +379,10 @@ Optional<HitTestResult> StackingContext::hit_test(Gfx::FloatPoint const& positio
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (paintable().computed_values().pointer_events() == CSS::PointerEvents::None) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE: Hit testing basically happens in reverse painting order.
|
// NOTE: Hit testing basically happens in reverse painting order.
|
||||||
// https://www.w3.org/TR/CSS22/visuren.html#z-index
|
// https://www.w3.org/TR/CSS22/visuren.html#z-index
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue