feat(iced): implement shape_sync bidirectional sync
This commit is contained in:
@@ -1447,15 +1447,14 @@ impl HcieIcedApp {
|
||||
Message::FgColorChanged(color) => {
|
||||
self.fg_color = color;
|
||||
self.active_document_mut().engine.set_color(color);
|
||||
// Record the new color in the recent-colors list so the
|
||||
// picker's recent swatches populate (egui does this on
|
||||
// drag-stopped/click in color.rs:316/816/915).
|
||||
self.add_recent_color(color);
|
||||
self.colors_dirty = true;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
}
|
||||
|
||||
Message::BgColorChanged(color) => {
|
||||
self.bg_color = color;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
}
|
||||
|
||||
Message::SwapColors => {
|
||||
@@ -1464,6 +1463,7 @@ impl HcieIcedApp {
|
||||
self.active_document_mut().engine.set_color(color);
|
||||
self.add_recent_color(color);
|
||||
self.colors_dirty = true;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
}
|
||||
Message::ResetColors => {
|
||||
// Reset fg=black, bg=white (egui: toolbox.rs:351-354).
|
||||
@@ -2725,26 +2725,32 @@ impl HcieIcedApp {
|
||||
}
|
||||
Message::VectorStrokeChanged(s) => {
|
||||
self.settings.tool_settings.vector_stroke_width = s;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
let _ = self.settings.save();
|
||||
}
|
||||
Message::VectorOpacityChanged(o) => {
|
||||
self.settings.tool_settings.vector_opacity = o;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
let _ = self.settings.save();
|
||||
}
|
||||
Message::VectorFillToggled(f) => {
|
||||
self.settings.tool_settings.vector_fill = f;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
let _ = self.settings.save();
|
||||
}
|
||||
Message::VectorRadiusChanged(r) => {
|
||||
self.settings.tool_settings.vector_radius = r;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
let _ = self.settings.save();
|
||||
}
|
||||
Message::VectorPointsChanged(p) => {
|
||||
self.settings.tool_settings.vector_points = p;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
let _ = self.settings.save();
|
||||
}
|
||||
Message::VectorSidesChanged(s) => {
|
||||
self.settings.tool_settings.vector_sides = s;
|
||||
crate::shape_sync::sync_shape_from_tool(self);
|
||||
let _ = self.settings.save();
|
||||
}
|
||||
Message::TextFontChanged(font) => {
|
||||
@@ -3487,6 +3493,7 @@ impl HcieIcedApp {
|
||||
doc.vector_draw = None; // clear any preview
|
||||
doc.vector_edit_handle = VEH::Move;
|
||||
self.vector_drag_last = Some((x, y));
|
||||
crate::shape_sync::sync_tool_from_shape(self);
|
||||
} else {
|
||||
// No shape under cursor — deselect.
|
||||
let doc = &mut self.documents[self.active_doc];
|
||||
@@ -3561,6 +3568,7 @@ impl HcieIcedApp {
|
||||
if idx.is_some() {
|
||||
let snapshot = self.documents[self.active_doc].engine.active_vector_shapes();
|
||||
self.vector_shapes_snapshot = snapshot;
|
||||
crate::shape_sync::sync_tool_from_shape(self);
|
||||
} else {
|
||||
self.vector_shapes_snapshot = None;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user