Keep port identity labels above diagram text without consuming gestures

This commit is contained in:
2026-09-06 02:39:18 +03:00
parent fef2e0dbce
commit ad7feb523a
8 changed files with 571 additions and 152 deletions
+20 -18
View File
@@ -382,24 +382,26 @@ fn diagram(app: &App) -> View<'_, Message> {
.spacing(10)
.align_y(iced::Center);
let canvas: View<'_, Message> = if let Some(id) = app.active_diagram {
widget::sensor(
widget::canvas(DiagramCanvas {
project: app.project(),
diagram: id,
selected: app.selected,
zoom: app.zoom,
pan: app.pan,
context: app.route_context().unwrap(),
selected_bend: app
.selected_bend
.filter(|(edge, _)| *edge == app.selected)
.map(|(_, i)| i),
editable: !app.draft_dirty() && !app.source_dirty(),
connection: app.connection.as_ref(),
})
.width(Fill)
.height(Fill),
)
let program = DiagramCanvas {
project: app.project(),
diagram: id,
selected: app.selected,
zoom: app.zoom,
pan: app.pan,
context: app.route_context().unwrap(),
selected_bend: app
.selected_bend
.filter(|(edge, _)| *edge == app.selected)
.map(|(_, i)| i),
editable: !app.draft_dirty() && !app.source_dirty(),
connection: app.connection.as_ref(),
};
widget::sensor(widget::stack![
widget::canvas(program).width(Fill).height(Fill),
widget::canvas(crate::diagram::PortLabels(program))
.width(Fill)
.height(Fill),
])
.on_show(Message::CanvasResized)
.on_resize(Message::CanvasResized)
.into()