mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-17 09:16:11 +03:00
terminal: add assertion for trackPin as commented
This commit is contained in:
@ -1986,7 +1986,7 @@ pub fn pin(self: *const PageList, pt: point.Point) ?Pin {
|
|||||||
/// pin points to is removed completely, the tracked pin will be updated
|
/// pin points to is removed completely, the tracked pin will be updated
|
||||||
/// to the top-left of the screen.
|
/// to the top-left of the screen.
|
||||||
pub fn trackPin(self: *PageList, p: Pin) !*Pin {
|
pub fn trackPin(self: *PageList, p: Pin) !*Pin {
|
||||||
// TODO: assert pin is valid
|
if (comptime std.debug.runtime_safety) assert(self.pinIsValid(p));
|
||||||
|
|
||||||
// Create our tracked pin
|
// Create our tracked pin
|
||||||
const tracked = try self.pool.pins.create();
|
const tracked = try self.pool.pins.create();
|
||||||
@ -2012,6 +2012,20 @@ pub fn countTrackedPins(self: *const PageList) usize {
|
|||||||
return self.tracked_pins.count();
|
return self.tracked_pins.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Checks if a pin is valid for this pagelist. This is a very slow and
|
||||||
|
/// expensive operation since we traverse the entire linked list in the
|
||||||
|
/// worst case. Only for runtime safety/debug.
|
||||||
|
fn pinIsValid(self: *const PageList, p: Pin) bool {
|
||||||
|
var it = self.pages.first;
|
||||||
|
while (it) |page| : (it = page.next) {
|
||||||
|
if (page != p.page) continue;
|
||||||
|
return p.y < page.data.size.rows and
|
||||||
|
p.x < page.data.size.cols;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns the viewport for the given pin, prefering to pin to
|
/// Returns the viewport for the given pin, prefering to pin to
|
||||||
/// "active" if the pin is within the active area.
|
/// "active" if the pin is within the active area.
|
||||||
fn pinIsActive(self: *const PageList, p: Pin) bool {
|
fn pinIsActive(self: *const PageList, p: Pin) bool {
|
||||||
|
Reference in New Issue
Block a user