use textarea.innerInsert for selection-aware text insertion

Both insertText() and handleKeydown() were manually concatenating text
to the textarea value, ignoring the current selection range. This uses
the existing innerInsert() method which correctly handles full, partial,
and no-selection states — matching the Input element behavior.
This commit is contained in:
egrs
2026-02-18 13:47:09 +01:00
parent 536d394e41
commit 37ecd5cdef

View File

@@ -3113,9 +3113,7 @@ pub fn handleKeydown(self: *Page, target: *Node, event: *Event) !void {
else return
;
// zig fmt: on
const current_value = textarea.getValue();
const new_value = try std.mem.concat(self.arena, u8, &.{ current_value, append });
return textarea.setValue(new_value, self);
return textarea.innerInsert(append, self);
}
}
@@ -3200,13 +3198,11 @@ pub fn insertText(self: *Page, v: []const u8) !void {
return;
}
try input.innerInsert(v, self);
return input.innerInsert(v, self);
}
if (html_element.is(Element.Html.TextArea)) |textarea| {
const current_value = textarea.getValue();
const new_value = try std.mem.concat(self.arena, u8, &.{ current_value, v });
return textarea.setValue(new_value, self);
return textarea.innerInsert(v, self);
}
}