mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 22:48:11 +00:00
LibWeb: Implement HTMLElement.click()
This doesn't send the correct type of click event, but it does send something, so it's already somewhat useful. :^)
This commit is contained in:
parent
1347c5032b
commit
e842e955e5
3 changed files with 28 additions and 1 deletions
|
@ -389,4 +389,24 @@ void HTMLElement::focus()
|
|||
// 5. Unmark the element as locked for focus.
|
||||
m_locked_for_focus = false;
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/interaction.html#dom-click
|
||||
void HTMLElement::click()
|
||||
{
|
||||
// FIXME: 1. If this element is a form control that is disabled, then return.
|
||||
|
||||
// 2. If this element's click in progress flag is set, then return.
|
||||
if (m_click_in_progress)
|
||||
return;
|
||||
|
||||
// 3. Set this element's click in progress flag.
|
||||
m_click_in_progress = true;
|
||||
|
||||
// FIXME: 4. Fire a synthetic pointer event named click at this element, with the not trusted flag set.
|
||||
dispatch_event(DOM::Event::create("click"));
|
||||
|
||||
// 5. Unset this element's click in progress flag.
|
||||
m_click_in_progress = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
||||
* Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
@ -42,6 +42,8 @@ public:
|
|||
|
||||
void focus();
|
||||
|
||||
void click();
|
||||
|
||||
protected:
|
||||
virtual void parse_attribute(const FlyString& name, const String& value) override;
|
||||
|
||||
|
@ -60,6 +62,9 @@ private:
|
|||
|
||||
// https://html.spec.whatwg.org/multipage/interaction.html#locked-for-focus
|
||||
bool m_locked_for_focus { false };
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/interaction.html#click-in-progress-flag
|
||||
bool m_click_in_progress { false };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ interface HTMLElement : Element {
|
|||
|
||||
attribute DOMString contentEditable;
|
||||
|
||||
undefined click();
|
||||
|
||||
// FIXME: Support the optional FocusOptions parameter.
|
||||
undefined focus();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue