mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-29 08:11:13 +00:00
Revert "LibWeb: Change where content selection via mouse is allowed"
This reverts commit 6c9adf3dbc
.
This change breaks e.g. typing into the search box on google.com and
comment boxes on github.com.
This commit is contained in:
parent
fa4b324a12
commit
660e846e94
Notes:
github-actions[bot]
2024-08-26 18:09:55 +00:00
Author: https://github.com/trflynn89 Commit: https://github.com/LadybirdBrowser/ladybird/commit/660e846e945 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1195
|
@ -70,8 +70,6 @@ public:
|
||||||
virtual bool has_activation_behavior() const override;
|
virtual bool has_activation_behavior() const override;
|
||||||
virtual void activation_behavior(DOM::Event const&) override;
|
virtual void activation_behavior(DOM::Event const&) override;
|
||||||
|
|
||||||
virtual bool is_child_node_selectable(DOM::Node const&) const override { return false; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool is_html_button_element() const override { return true; }
|
virtual bool is_html_button_element() const override { return true; }
|
||||||
|
|
||||||
|
|
|
@ -80,8 +80,6 @@ public:
|
||||||
WebIDL::ExceptionOr<void> set_popover(Optional<String> value);
|
WebIDL::ExceptionOr<void> set_popover(Optional<String> value);
|
||||||
Optional<String> popover() const;
|
Optional<String> popover() const;
|
||||||
|
|
||||||
virtual bool is_child_node_selectable(DOM::Node const&) const { return true; }
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HTMLElement(DOM::Document&, DOM::QualifiedName);
|
HTMLElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
||||||
|
|
|
@ -2380,9 +2380,4 @@ HTMLInputElement::ValueAttributeMode HTMLInputElement::value_attribute_mode() co
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HTMLInputElement::is_child_node_selectable(DOM::Node const& node) const
|
|
||||||
{
|
|
||||||
return !is_button() && (!m_placeholder_element || !m_placeholder_element->is_inclusive_ancestor_of(node));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -206,8 +206,6 @@ public:
|
||||||
WebIDL::ExceptionOr<void> set_selection_end_for_bindings(Optional<WebIDL::UnsignedLong> const&);
|
WebIDL::ExceptionOr<void> set_selection_end_for_bindings(Optional<WebIDL::UnsignedLong> const&);
|
||||||
Optional<WebIDL::UnsignedLong> selection_end_for_bindings() const;
|
Optional<WebIDL::UnsignedLong> selection_end_for_bindings() const;
|
||||||
|
|
||||||
virtual bool is_child_node_selectable(DOM::Node const&) const override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLInputElement(DOM::Document&, DOM::QualifiedName);
|
HTMLInputElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
||||||
|
|
|
@ -449,19 +449,9 @@ bool EventHandler::handle_mousedown(CSSPixelPoint viewport_position, CSSPixelPoi
|
||||||
HTML::run_unfocusing_steps(focused_element);
|
HTML::run_unfocusing_steps(focused_element);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ask the next non-shadow parent element whether the node at the mouse position is selectable.
|
// If we didn't focus anything, place the document text cursor at the mouse position.
|
||||||
auto& root_node = dom_node->root();
|
// FIXME: This is all rather strange. Find a better solution.
|
||||||
DOM::Element* non_shadow_parent_element;
|
if (!did_focus_something || dom_node->is_editable()) {
|
||||||
if (root_node.is_shadow_root())
|
|
||||||
non_shadow_parent_element = root_node.parent_or_shadow_host_element();
|
|
||||||
else
|
|
||||||
non_shadow_parent_element = dom_node->parent_element();
|
|
||||||
bool is_selectable = true;
|
|
||||||
if (non_shadow_parent_element && non_shadow_parent_element->is_html_element())
|
|
||||||
is_selectable = static_cast<HTML::HTMLElement*>(non_shadow_parent_element)->is_child_node_selectable(*dom_node);
|
|
||||||
|
|
||||||
// If it is selectable, place the document text cursor at the mouse position.
|
|
||||||
if (is_selectable) {
|
|
||||||
auto& realm = document->realm();
|
auto& realm = document->realm();
|
||||||
document->set_cursor_position(DOM::Position::create(realm, *dom_node, result->index_in_node));
|
document->set_cursor_position(DOM::Position::create(realm, *dom_node, result->index_in_node));
|
||||||
if (auto selection = document->get_selection()) {
|
if (auto selection = document->get_selection()) {
|
||||||
|
|
Loading…
Reference in a new issue