Определение позиции дочернего объекта

This commit is contained in:
2026-02-26 21:33:09 +03:00
parent 77604e7b2b
commit 2ab6bcd408
8 changed files with 84 additions and 50 deletions

View File

@@ -58,23 +58,23 @@ pub fn canvasView(canvas: *Canvas, selected_object_id: ?u64, content_rect_scale:
// Панель свойств поверх scroll (правый верхний угол)
if (selected_object_id) |obj_id| {
if (canvas.document.findObjectById(obj_id)) |obj| {
var properties_box = dvui.box(
@src(),
.{ .dir = .horizontal },
.{
.expand = .none,
.background = false,
.gravity_x = 1.0,
.gravity_y = 0.0,
.margin = dvui.Rect{ .w = 32, .y = 16, .h = 100 },
},
);
{
drawPropertiesPanel(canvas, obj);
}
// Сохраняем rect панели свойств для следующего кадра — в handleCanvasMouse исключаем из него клики
canvas.properties_rect_scale = properties_box.data().contentRectScale();
properties_box.deinit();
var properties_box = dvui.box(
@src(),
.{ .dir = .horizontal },
.{
.expand = .none,
.background = false,
.gravity_x = 1.0,
.gravity_y = 0.0,
.margin = dvui.Rect{ .w = 32, .y = 16, .h = 100 },
},
);
{
drawPropertiesPanel(canvas, obj);
}
// Сохраняем rect панели свойств для следующего кадра — в handleCanvasMouse исключаем из него клики
canvas.properties_rect_scale = properties_box.data().contentRectScale();
properties_box.deinit();
}
}
@@ -192,8 +192,8 @@ fn handleCanvasZoom(canvas: *Canvas, scroll: anytype) void {
};
const doc_pt = canvas.contentPointToDocument(content_pt, natural_scale);
// canvas.addZoom(y / 1000);
canvas.multZoom(1 + y / 3000);
canvas.addZoom(y / 1000);
// canvas.multZoom(1 + y / 3000);
canvas.requestRedraw();
// Сдвигаем viewport так, чтобы точка под курсором (даже вне холста) не уезжала