terminal/kitty: delete all images ignores virtual placements

This commit is contained in:
Mitchell Hashimoto
2024-07-29 19:37:47 -07:00
parent 765254e784
commit a1276b3cc3

View File

@@ -218,19 +218,27 @@ pub const ImageStorage = struct {
cmd: command.Delete, cmd: command.Delete,
) void { ) void {
switch (cmd) { switch (cmd) {
// TODO: virtual placeholders must not be deleted according to spec .all => |delete_images| {
.all => |delete_images| if (delete_images) { var it = self.placements.iterator();
// We just reset our entire state. while (it.next()) |entry| {
self.deinit(alloc, &t.screen); // Skip virtual placements
self.* = .{ switch (entry.value_ptr.location) {
.dirty = true, .pin => {},
.total_limit = self.total_limit, .virtual => continue,
}; }
} else {
// Delete all our placements // Deinit the placement and remove it
self.clearPlacements(&t.screen); const image_id = entry.key_ptr.image_id;
self.placements.deinit(alloc); entry.value_ptr.deinit(&t.screen);
self.placements = .{}; self.placements.removeByPtr(entry.key_ptr);
if (delete_images) self.deleteIfUnused(alloc, image_id);
}
if (delete_images) {
var image_it = self.images.iterator();
while (image_it.next()) |kv| self.deleteIfUnused(alloc, kv.key_ptr.*);
}
self.dirty = true; self.dirty = true;
}, },