do not modify old range in collapseToX

This commit is contained in:
Muki Kiboigo
2026-01-16 00:48:07 -08:00
parent 4ecc59d0c0
commit f56d3bd193

View File

@@ -124,27 +124,33 @@ pub fn removeAllRanges(self: *Selection) void {
self._direction = .none;
}
pub fn collapseToEnd(self: *Selection) !void {
pub fn collapseToEnd(self: *Selection, page: *Page) !void {
const range = self._range orelse return;
const abstract = range.asAbstractRange();
const last_node = abstract.getEndContainer();
const last_offset = abstract.getEndOffset();
try range.setStart(last_node, last_offset);
try range.setEnd(last_node, last_offset);
const new_range = try Range.init(page);
try new_range.setStart(last_node, last_offset);
try new_range.setEnd(last_node, last_offset);
self._range = new_range;
self._direction = .none;
}
pub fn collapseToStart(self: *Selection) !void {
pub fn collapseToStart(self: *Selection, page: *Page) !void {
const range = self._range orelse return;
const abstract = range.asAbstractRange();
const first_node = abstract.getStartContainer();
const first_offset = abstract.getStartOffset();
try range.setStart(first_node, first_offset);
try range.setEnd(first_node, first_offset);
const new_range = try Range.init(page);
try new_range.setStart(first_node, first_offset);
try new_range.setEnd(first_node, first_offset);
self._range = new_range;
self._direction = .none;
}