Переход на object_id

This commit is contained in:
2026-02-26 20:57:35 +03:00
parent f55a756132
commit 291dbd6f85
8 changed files with 80 additions and 26 deletions

View File

@@ -11,8 +11,8 @@ const panel_radius: f32 = 24;
const fill_color = dvui.Color.black.opacity(0.2);
const ObjectTreeCallback = union(enum) {
select: *Object,
delete: *Object,
select: u64,
delete: u64,
};
fn shapeLabel(shape: Object.ShapeKind) []const u8 {
@@ -26,8 +26,8 @@ fn shapeLabel(shape: Object.ShapeKind) []const u8 {
fn objectTreeRow(open_doc: *WindowContext.OpenDocument, obj: *Object, depth: u32, object_callback: *?ObjectTreeCallback) void {
const indent_px = depth * 18;
const is_selected: bool = open_doc.selected_object == obj;
const row_id = @intFromPtr(obj);
const is_selected: bool = open_doc.selected_object_id == obj.id;
const row_id: usize = @intCast(obj.id);
const focus_color = dvui.themeGet().focus;
@@ -83,14 +83,14 @@ fn objectTreeRow(open_doc: *WindowContext.OpenDocument, obj: *Object, depth: u32
.gravity_x = 1.0,
};
if (dvui.buttonIcon(@src(), "Delete object", icons.trash, .{}, .{}, delete_opts)) {
object_callback.* = .{ .delete = obj };
object_callback.* = .{ .delete = obj.id };
}
}
}
content.deinit();
if (select_row) {
object_callback.* = .{ .select = obj };
object_callback.* = .{ .select = obj.id };
}
}
row.deinit();
@@ -113,16 +113,16 @@ fn objectTree(ctx: *WindowContext) void {
}
if (object_callback) |callback| {
switch (callback) {
.select => |obj| {
if (open_doc.selected_object == obj) {
open_doc.selected_object = null;
.select => |obj_id| {
if (open_doc.selected_object_id == obj_id) {
open_doc.selected_object_id = null;
} else {
open_doc.selected_object = obj;
open_doc.selected_object_id = obj_id;
}
},
.delete => |obj| {
_ = doc.removeObject(obj);
open_doc.selected_object = null;
.delete => |obj_id| {
_ = doc.removeObjectById(obj_id);
open_doc.selected_object_id = null;
open_doc.canvas.requestRedraw();
},
}