forked from 1b-agent/opencadstudio-upstream
fix(images): refresh raster cache during grip edits
This commit is contained in:
1 parent
410624e4b3
commit
2ed09459c1
1 file changed
+24
@@ -1308,5 +1308,29 @@ impl Scene {
|
|||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
// The grip-drag caller refreshes changed resident meshes per move.
|
// The grip-drag caller refreshes changed resident meshes per move.
|
||||||
|
// Raster images, OLE frames and PDF underlays keep a derived ImageModel
|
||||||
|
// with their textured quad geometry. A grip edit mutates the entity directly,
|
||||||
|
// so rebuild that cache as well or only the wire frame follows the grip.
|
||||||
|
let image_bearing = self.document.get_entity(handle).is_some_and(|entity| {
|
||||||
|
matches!(
|
||||||
|
entity,
|
||||||
|
EntityType::RasterImage(_)
|
||||||
|
| EntityType::Ole2Frame(_)
|
||||||
|
| EntityType::Underlay(_)
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
|
if image_bearing {
|
||||||
|
let model = self
|
||||||
|
.document
|
||||||
|
.get_entity(handle)
|
||||||
|
.and_then(|entity| self.image_seed_for(entity));
|
||||||
|
|
||||||
|
self.images.remove(&handle);
|
||||||
|
|
||||||
|
if let Some(model) = model {
|
||||||
|
self.images.insert(handle, model);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user