mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 22:38:12 +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.
|
// 5. Unmark the element as locked for focus.
|
||||||
m_locked_for_focus = false;
|
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
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -42,6 +42,8 @@ public:
|
||||||
|
|
||||||
void focus();
|
void focus();
|
||||||
|
|
||||||
|
void click();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void parse_attribute(const FlyString& name, const String& value) override;
|
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
|
// https://html.spec.whatwg.org/multipage/interaction.html#locked-for-focus
|
||||||
bool m_locked_for_focus { false };
|
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;
|
attribute DOMString contentEditable;
|
||||||
|
|
||||||
|
undefined click();
|
||||||
|
|
||||||
// FIXME: Support the optional FocusOptions parameter.
|
// FIXME: Support the optional FocusOptions parameter.
|
||||||
undefined focus();
|
undefined focus();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue