LibWeb: Don't place cursor on certain <input> elements

For example, button inputs shouldn't have a cursor
displayed in their text since they're not editable,
and are not meant to be editable.

Fixes #4140

Co-authored-by: Sam Atkins <sam@ladybird.org>
This commit is contained in:
Saksham Mittal 2025-05-16 09:22:38 +05:30 committed by Sam Atkins
parent 17f14a277b
commit c52c05555b
Notes: github-actions[bot] 2025-06-02 10:39:46 +00:00
3 changed files with 16 additions and 3 deletions

View file

@ -6306,9 +6306,12 @@ GC::Ptr<DOM::Position> Document::cursor_position() const
return nullptr;
Optional<HTML::FormAssociatedTextControlElement const&> target {};
if (is<HTML::HTMLInputElement>(*focused_element))
target = static_cast<HTML::HTMLInputElement const&>(*focused_element);
else if (is<HTML::HTMLTextAreaElement>(*focused_element))
if (auto const* input_element = as_if<HTML::HTMLInputElement>(*focused_element)) {
// Some types of <input> tags shouldn't have a cursor, like buttons
if (!input_element->can_have_text_editing_cursor())
return nullptr;
target = *input_element;
} else if (is<HTML::HTMLTextAreaElement>(*focused_element))
target = static_cast<HTML::HTMLTextAreaElement const&>(*focused_element);
if (target.has_value())