mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-01 21:59:07 +00:00
LibWeb: Fix a LibJSGCVerifier warning in DOM::Text
This commit is contained in:
parent
164db73bdc
commit
7001e0a428
Notes:
sideshowbarker
2024-07-17 16:23:55 +09:00
Author: https://github.com/mattco98
Commit: 7001e0a428
Pull-request: https://github.com/SerenityOS/serenity/pull/23861
Reviewed-by: https://github.com/awesomekling
3 changed files with 14 additions and 6 deletions
|
@ -35,8 +35,7 @@ void Text::visit_edges(Cell::Visitor& visitor)
|
|||
{
|
||||
Base::visit_edges(visitor);
|
||||
SlottableMixin::visit_edges(visitor);
|
||||
|
||||
visitor.visit(dynamic_cast<JS::Cell*>(m_owner.ptr()));
|
||||
visitor.visit(m_owner);
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-text-text
|
||||
|
@ -47,6 +46,15 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Text>> Text::construct_impl(JS::Realm& real
|
|||
return realm.heap().allocate<Text>(realm, window.associated_document(), data);
|
||||
}
|
||||
|
||||
EditableTextNodeOwner* Text::editable_text_node_owner()
|
||||
{
|
||||
if (!m_owner)
|
||||
return nullptr;
|
||||
EditableTextNodeOwner* owner = dynamic_cast<EditableTextNodeOwner*>(m_owner.ptr());
|
||||
VERIFY(owner);
|
||||
return owner;
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-text-splittext
|
||||
// https://dom.spec.whatwg.org/#concept-text-split
|
||||
WebIDL::ExceptionOr<JS::NonnullGCPtr<Text>> Text::split_text(size_t offset)
|
||||
|
|
|
@ -39,8 +39,8 @@ public:
|
|||
void set_max_length(Optional<size_t> max_length) { m_max_length = move(max_length); }
|
||||
|
||||
template<DerivedFrom<EditableTextNodeOwner> T>
|
||||
void set_editable_text_node_owner(Badge<T>, EditableTextNodeOwner& owner_element) { m_owner = &owner_element; }
|
||||
EditableTextNodeOwner* editable_text_node_owner() { return m_owner.ptr(); }
|
||||
void set_editable_text_node_owner(Badge<T>, Element& owner_element) { m_owner = &owner_element; }
|
||||
EditableTextNodeOwner* editable_text_node_owner();
|
||||
|
||||
WebIDL::ExceptionOr<JS::NonnullGCPtr<Text>> split_text(size_t offset);
|
||||
|
||||
|
@ -55,7 +55,7 @@ protected:
|
|||
virtual void visit_edges(Cell::Visitor&) override;
|
||||
|
||||
private:
|
||||
JS::GCPtr<EditableTextNodeOwner> m_owner;
|
||||
JS::GCPtr<Element> m_owner;
|
||||
|
||||
bool m_always_editable { false };
|
||||
Optional<size_t> m_max_length {};
|
||||
|
|
|
@ -328,7 +328,7 @@ void BrowsingContext::did_edit(Badge<EditEventHandler>)
|
|||
|
||||
if (m_cursor_position && is<DOM::Text>(*m_cursor_position->node())) {
|
||||
auto& text_node = static_cast<DOM::Text&>(*m_cursor_position->node());
|
||||
if (auto* text_node_owner = text_node.editable_text_node_owner())
|
||||
if (auto text_node_owner = text_node.editable_text_node_owner())
|
||||
text_node_owner->did_edit_text_node({});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue