forked from 1b-agent/opencadstudio-upstream
fix(layer): refresh ribbon and layer panel when entities register novel layers
This commit is contained in:
1 parent
3f54f2f494
commit
9345c7799c
6 files changed
+82
-6
No files matched your search
+8
-4
@@ -143,13 +143,17 @@ impl Scene {
|
||||
/// layer 0. Auto-registering keeps it on its own layer (#252). Names are
|
||||
/// registered verbatim so the writer's (case-insensitive) lookup matches;
|
||||
/// the always-present default layer "0" and empty names are no-ops.
|
||||
pub fn ensure_layer(&mut self, name: &str) {
|
||||
if name.trim().is_empty() || self.document.layers.contains(name) {
|
||||
return;
|
||||
pub fn ensure_layer(&mut self, name: &str) -> bool {
|
||||
let trimmed = name.trim();
|
||||
if trimmed.is_empty() || trimmed == "0" || self.document.layers.contains(trimmed) {
|
||||
return false;
|
||||
}
|
||||
let mut layer = codec::tables::Layer::new(name);
|
||||
let mut layer = codec::tables::Layer::new(trimmed);
|
||||
layer.handle = self.document.allocate_handle();
|
||||
let _ = self.document.layers.add(layer);
|
||||
self.invalidate_layer_dependencies(&[trimmed.to_string()]);
|
||||
self.layer_table_dirty = true;
|
||||
true
|
||||
}
|
||||
|
||||
pub(crate) fn ensure_app_id(&mut self, name: &str) {
|
||||
|
||||
@@ -2054,6 +2054,9 @@ pub struct Scene {
|
||||
pub preview_text: Vec<crate::scene::pipeline::text_gpu::TextVertex>,
|
||||
/// Committed-segment wire drawn during multi-point commands (normal colour).
|
||||
pub interim_wire: Option<WireModel>,
|
||||
/// Set when an entity creation or update automatically registers a novel
|
||||
/// layer into the document layer table, signalling the UI to refresh.
|
||||
pub layer_table_dirty: bool,
|
||||
pub camera_generation: u64,
|
||||
/// Incremented whenever geometry-affecting state changes (entities, selection,
|
||||
/// preview wires, layer visibility, layout). The GPU pipeline uses this to
|
||||
@@ -2626,6 +2629,7 @@ impl Scene {
|
||||
preview_hatches: Arc::new(Vec::new()),
|
||||
preview_text: vec![],
|
||||
interim_wire: None,
|
||||
layer_table_dirty: false,
|
||||
camera_generation: 0,
|
||||
geometry_epoch: GEOMETRY_EPOCH.fetch_add(1, Ordering::Relaxed),
|
||||
projection_bounds_epoch: std::cell::Cell::new(0),
|
||||
|
||||
Reference in new issue
Block a user