From a6d6729034fba48877a807f4844eaee3cbfa7803 Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Mon, 20 May 2024 06:02:22 +0100 Subject: [PATCH] LibWeb: Implement the `MouseEvent.relatedTarget` attribute This returns the secondary target of a mouse event. For `onmouseenter` and `onmouseover` events, this is the EventTarget the mouse exited from. For `onmouseleave` and `onmouseout` events, this is the EventTarget the mouse entered to. --- .../Text/expected/UIEvents/mouse-events.txt | 20 +++++++++---------- .../Text/input/UIEvents/mouse-events.html | 15 +++++++++----- Userland/Libraries/LibWeb/DOM/Document.cpp | 16 +++++++++++---- .../Libraries/LibWeb/UIEvents/MouseEvent.cpp | 7 +++++++ .../Libraries/LibWeb/UIEvents/MouseEvent.h | 5 +++++ .../Libraries/LibWeb/UIEvents/MouseEvent.idl | 4 ++-- 6 files changed, 46 insertions(+), 21 deletions(-) diff --git a/Tests/LibWeb/Text/expected/UIEvents/mouse-events.txt b/Tests/LibWeb/Text/expected/UIEvents/mouse-events.txt index 7930ea30972..edebb5c7b93 100644 --- a/Tests/LibWeb/Text/expected/UIEvents/mouse-events.txt +++ b/Tests/LibWeb/Text/expected/UIEvents/mouse-events.txt @@ -1,13 +1,13 @@ > move pointer over #inner -mouseover target.id=(inner) currentTarget.id=(inner) -mouseover target.id=(inner) currentTarget.id=(outer) -mouseenter target.id=(inner) currentTarget.id=(inner) -mouseenter target.id=(outer) currentTarget.id=(outer) +mouseover target.id=(inner) currentTarget.id=(inner), relatedTarget.id=(body) +mouseover target.id=(inner) currentTarget.id=(outer), relatedTarget.id=(body) +mouseenter target.id=(inner) currentTarget.id=(inner), relatedTarget.id=(body) +mouseenter target.id=(outer) currentTarget.id=(outer), relatedTarget.id=(body) > move pointer over #outer -mouseout target.id=(inner) currentTarget.id=(inner) -mouseout target.id=(inner) currentTarget.id=(outer) -mouseleave target.id=(inner) currentTarget.id=(inner) -mouseover target.id=(outer) currentTarget.id=(outer) +mouseout target.id=(inner) currentTarget.id=(inner), relatedTarget.id=(outer) +mouseout target.id=(inner) currentTarget.id=(outer), relatedTarget.id=(outer) +mouseleave target.id=(inner) currentTarget.id=(inner), relatedTarget.id=(outer) +mouseover target.id=(outer) currentTarget.id=(outer), relatedTarget.id=(inner) > click document.body -mouseout target.id=(outer) currentTarget.id=(outer) -mouseleave target.id=(outer) currentTarget.id=(outer) +mouseout target.id=(outer) currentTarget.id=(outer), relatedTarget.id=(body) +mouseleave target.id=(outer) currentTarget.id=(outer), relatedTarget.id=(body) diff --git a/Tests/LibWeb/Text/input/UIEvents/mouse-events.html b/Tests/LibWeb/Text/input/UIEvents/mouse-events.html index ad8c533bc81..f82a5207084 100644 --- a/Tests/LibWeb/Text/input/UIEvents/mouse-events.html +++ b/Tests/LibWeb/Text/input/UIEvents/mouse-events.html @@ -3,6 +3,8 @@ body { margin: 0px; padding: 5px; + width: 200px; + height: 200px; } #outer { @@ -17,22 +19,23 @@ body { background-color: magenta; } -
+