From 68f5fa738c28102e290381d5f8ca1384fb2710f8 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Tue, 6 Jan 2026 11:48:22 +0100 Subject: [PATCH 1/2] remove dead code Page._appendNode --- src/browser/Page.zig | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/browser/Page.zig b/src/browser/Page.zig index 76998e9c..64e6eef3 100644 --- a/src/browser/Page.zig +++ b/src/browser/Page.zig @@ -2188,10 +2188,6 @@ pub fn insertAllChildrenBefore(self: *Page, fragment: *Node, target: *Node, ref_ } } -fn _appendNode(self: *Page, comptime from_parser: bool, parent: *Node, child: *Node, opts: InsertNodeOpts) !void { - self._insertNodeRelative(from_parser, parent, child, .append, opts); -} - const InsertNodeRelative = union(enum) { append, after: *Node, From 54fa3bc05416208e601fee4afb351da629d9388f Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Tue, 6 Jan 2026 11:52:47 +0100 Subject: [PATCH 2/2] remove children from previous parent --- src/browser/webapi/DocumentFragment.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/browser/webapi/DocumentFragment.zig b/src/browser/webapi/DocumentFragment.zig index 24d8d5a5..be2b841a 100644 --- a/src/browser/webapi/DocumentFragment.zig +++ b/src/browser/webapi/DocumentFragment.zig @@ -156,6 +156,12 @@ pub fn replaceChildren(self: *DocumentFragment, nodes: []const Node.NodeOrText, const parent_is_connected = parent.isConnected(); for (nodes) |node_or_text| { const child = try node_or_text.toNode(page); + + // If the new children has already a parent, remove from it. + if (child._parent) |p| { + page.removeNode(p, child, .{ .will_be_reconnected = true }); + } + try page.appendNode(parent, child, .{ .child_already_connected = parent_is_connected }); } }