mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 15:13:28 +00:00
renderer fix & url buffer
This commit is contained in:
@@ -193,7 +193,7 @@ pub const Session = struct {
|
|||||||
// can't use the page arena, because we're about to reset it
|
// can't use the page arena, because we're about to reset it
|
||||||
// and don't want to use the session's arena, because that'll start to
|
// and don't want to use the session's arena, because that'll start to
|
||||||
// look like a leak if we navigate from page to page a lot.
|
// look like a leak if we navigate from page to page a lot.
|
||||||
var buf: [1024]u8 = undefined;
|
var buf: [4096]u8 = undefined;
|
||||||
var fba = std.heap.FixedBufferAllocator.init(&buf);
|
var fba = std.heap.FixedBufferAllocator.init(&buf);
|
||||||
const url = try self.page.?.url.resolve(fba.allocator(), url_string);
|
const url = try self.page.?.url.resolve(fba.allocator(), url_string);
|
||||||
|
|
||||||
@@ -818,8 +818,8 @@ const FlatRenderer = struct {
|
|||||||
const gop = try self.positions.getOrPut(self.allocator, @intFromPtr(e));
|
const gop = try self.positions.getOrPut(self.allocator, @intFromPtr(e));
|
||||||
var x: u32 = gop.value_ptr.*;
|
var x: u32 = gop.value_ptr.*;
|
||||||
if (gop.found_existing == false) {
|
if (gop.found_existing == false) {
|
||||||
try elements.append(self.allocator, @intFromPtr(e));
|
|
||||||
x = @intCast(elements.items.len);
|
x = @intCast(elements.items.len);
|
||||||
|
try elements.append(self.allocator, @intFromPtr(e));
|
||||||
gop.value_ptr.* = x;
|
gop.value_ptr.* = x;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -841,7 +841,7 @@ const FlatRenderer = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn width(self: *const FlatRenderer) u32 {
|
pub fn width(self: *const FlatRenderer) u32 {
|
||||||
return @intCast(self.elements.items.len + 1); // +1 since x starts at 1 (use len after append)
|
return @max(@as(u32, @intCast(self.elements.items.len)), 1); // At least 1 pixel even if empty
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn height(_: *const FlatRenderer) u32 {
|
pub fn height(_: *const FlatRenderer) u32 {
|
||||||
@@ -849,7 +849,7 @@ const FlatRenderer = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn getElementAtPosition(self: *const FlatRenderer, x: i32, y: i32) ?*parser.Element {
|
pub fn getElementAtPosition(self: *const FlatRenderer, x: i32, y: i32) ?*parser.Element {
|
||||||
if (y != 1 or x < 0) {
|
if (y != 0 or x < 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -500,24 +500,24 @@ test "Browser.DOM.Element" {
|
|||||||
.{ "document.getElementById('para').clientHeight", "1" },
|
.{ "document.getElementById('para').clientHeight", "1" },
|
||||||
|
|
||||||
.{ "let r1 = document.getElementById('para').getBoundingClientRect()", "undefined" },
|
.{ "let r1 = document.getElementById('para').getBoundingClientRect()", "undefined" },
|
||||||
.{ "r1.x", "1" },
|
.{ "r1.x", "0" },
|
||||||
.{ "r1.y", "0" },
|
.{ "r1.y", "0" },
|
||||||
.{ "r1.width", "1" },
|
.{ "r1.width", "1" },
|
||||||
.{ "r1.height", "1" },
|
.{ "r1.height", "1" },
|
||||||
|
|
||||||
.{ "let r2 = document.getElementById('content').getBoundingClientRect()", "undefined" },
|
.{ "let r2 = document.getElementById('content').getBoundingClientRect()", "undefined" },
|
||||||
.{ "r2.x", "2" },
|
.{ "r2.x", "1" },
|
||||||
.{ "r2.y", "0" },
|
.{ "r2.y", "0" },
|
||||||
.{ "r2.width", "1" },
|
.{ "r2.width", "1" },
|
||||||
.{ "r2.height", "1" },
|
.{ "r2.height", "1" },
|
||||||
|
|
||||||
.{ "let r3 = document.getElementById('para').getBoundingClientRect()", "undefined" },
|
.{ "let r3 = document.getElementById('para').getBoundingClientRect()", "undefined" },
|
||||||
.{ "r3.x", "1" },
|
.{ "r3.x", "0" },
|
||||||
.{ "r3.y", "0" },
|
.{ "r3.y", "0" },
|
||||||
.{ "r3.width", "1" },
|
.{ "r3.width", "1" },
|
||||||
.{ "r3.height", "1" },
|
.{ "r3.height", "1" },
|
||||||
|
|
||||||
.{ "document.getElementById('para').clientWidth", "3" },
|
.{ "document.getElementById('para').clientWidth", "2" },
|
||||||
.{ "document.getElementById('para').clientHeight", "1" },
|
.{ "document.getElementById('para').clientHeight", "1" },
|
||||||
}, .{});
|
}, .{});
|
||||||
|
|
||||||
|
|||||||
@@ -247,16 +247,16 @@ test "Browser.DOM.IntersectionObserver" {
|
|||||||
try runner.testCases(&.{
|
try runner.testCases(&.{
|
||||||
.{ "let entry;", "undefined" },
|
.{ "let entry;", "undefined" },
|
||||||
.{ "new IntersectionObserver(entries => { entry = entries[0]; }).observe(document.createElement('div'));", "undefined" },
|
.{ "new IntersectionObserver(entries => { entry = entries[0]; }).observe(document.createElement('div'));", "undefined" },
|
||||||
.{ "entry.boundingClientRect.x;", "1" },
|
.{ "entry.boundingClientRect.x;", "0" },
|
||||||
.{ "entry.intersectionRatio;", "1" },
|
.{ "entry.intersectionRatio;", "1" },
|
||||||
.{ "entry.intersectionRect.x;", "1" },
|
.{ "entry.intersectionRect.x;", "0" },
|
||||||
.{ "entry.intersectionRect.y;", "0" },
|
.{ "entry.intersectionRect.y;", "0" },
|
||||||
.{ "entry.intersectionRect.width;", "1" },
|
.{ "entry.intersectionRect.width;", "1" },
|
||||||
.{ "entry.intersectionRect.height;", "1" },
|
.{ "entry.intersectionRect.height;", "1" },
|
||||||
.{ "entry.isIntersecting;", "true" },
|
.{ "entry.isIntersecting;", "true" },
|
||||||
.{ "entry.rootBounds.x;", "0" },
|
.{ "entry.rootBounds.x;", "0" },
|
||||||
.{ "entry.rootBounds.y;", "0" },
|
.{ "entry.rootBounds.y;", "0" },
|
||||||
.{ "entry.rootBounds.width;", "2" },
|
.{ "entry.rootBounds.width;", "1" },
|
||||||
.{ "entry.rootBounds.height;", "1" },
|
.{ "entry.rootBounds.height;", "1" },
|
||||||
.{ "entry.target;", "[object HTMLDivElement]" },
|
.{ "entry.target;", "[object HTMLDivElement]" },
|
||||||
}, .{});
|
}, .{});
|
||||||
@@ -273,6 +273,6 @@ test "Browser.DOM.IntersectionObserver" {
|
|||||||
"undefined",
|
"undefined",
|
||||||
},
|
},
|
||||||
.{ "new_observer.observe(document.createElement('div'));", "undefined" },
|
.{ "new_observer.observe(document.createElement('div'));", "undefined" },
|
||||||
.{ "new_entry.rootBounds.x;", "2" },
|
.{ "new_entry.rootBounds.x;", "1" },
|
||||||
}, .{});
|
}, .{});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user