mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 05:27:43 +00:00
LibWeb: Implement Selection.collapse_to_start
This commit is contained in:
parent
6d46ebfe8a
commit
bb5da1b4e2
2 changed files with 17 additions and 3 deletions
|
@ -199,9 +199,23 @@ WebIDL::ExceptionOr<void> Selection::set_position(JS::GCPtr<DOM::Node> node, uns
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/selection-api/#dom-selection-collapsetostart
|
// https://w3c.github.io/selection-api/#dom-selection-collapsetostart
|
||||||
void Selection::collapse_to_start()
|
WebIDL::ExceptionOr<void> Selection::collapse_to_start()
|
||||||
{
|
{
|
||||||
TODO();
|
// 1. The method must throw InvalidStateError exception if the this is empty.
|
||||||
|
if (!m_range) {
|
||||||
|
return WebIDL::InvalidStateError::create(realm(), "Selection.collapse_to_start() on empty range"sv);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Otherwise, it must create a new range
|
||||||
|
auto new_range = DOM::Range::create(*m_document);
|
||||||
|
|
||||||
|
// 3. Set the start both its start and end to the start of this's range
|
||||||
|
TRY(new_range->set_start(*anchor_node(), m_range->start_offset()));
|
||||||
|
TRY(new_range->set_end(*anchor_node(), m_range->start_offset()));
|
||||||
|
|
||||||
|
// 4. Then set this's range to the newly-created range.
|
||||||
|
m_range = new_range;
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/selection-api/#dom-selection-collapsetoend
|
// https://w3c.github.io/selection-api/#dom-selection-collapsetoend
|
||||||
|
|
|
@ -39,7 +39,7 @@ public:
|
||||||
void empty();
|
void empty();
|
||||||
WebIDL::ExceptionOr<void> collapse(JS::GCPtr<DOM::Node>, unsigned offset);
|
WebIDL::ExceptionOr<void> collapse(JS::GCPtr<DOM::Node>, unsigned offset);
|
||||||
WebIDL::ExceptionOr<void> set_position(JS::GCPtr<DOM::Node>, unsigned offset);
|
WebIDL::ExceptionOr<void> set_position(JS::GCPtr<DOM::Node>, unsigned offset);
|
||||||
void collapse_to_start();
|
WebIDL::ExceptionOr<void> collapse_to_start();
|
||||||
void collapse_to_end();
|
void collapse_to_end();
|
||||||
WebIDL::ExceptionOr<void> extend(JS::NonnullGCPtr<DOM::Node>, unsigned offset);
|
WebIDL::ExceptionOr<void> extend(JS::NonnullGCPtr<DOM::Node>, unsigned offset);
|
||||||
WebIDL::ExceptionOr<void> set_base_and_extent(JS::NonnullGCPtr<DOM::Node> anchor_node, unsigned anchor_offset, JS::NonnullGCPtr<DOM::Node> focus_node, unsigned focus_offset);
|
WebIDL::ExceptionOr<void> set_base_and_extent(JS::NonnullGCPtr<DOM::Node> anchor_node, unsigned anchor_offset, JS::NonnullGCPtr<DOM::Node> focus_node, unsigned focus_offset);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue