mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-12 00:49:14 -06:00
step_damage narrows a layer whose only change is in its surfaces (pixels, mask, type, smart-object and fill caches) to the bounding box of the tiles that differ: a merge walk of the two tile maps, pointer compares only. A mask's tiles grow by its feather, all of them by the layer's effects and the effects of the groups around it, never past the layer's whole extents. A frame-spanning effect whose frame moved keeps the whole extents (#4053). Undo, redo and History jumps get it for free: undoing a 60 px dab on a full-canvas layer redraws its tiles, not the canvas, and so does a fill or filter on a small selection. The painting commands' own damage rects go through one door, Session::hint_damage, which intersects them with the edit's damage. Debug and test builds count a hint that misses a changed tile in Session::damage_misses and log it; nothing panics. refresh_type_layers reports step_damage instead of None. Deleted: note_damage and layers_damage (identical to step_damage after layer.setProps and layer.translate), note_inert_insert (step_damage already steps over inert layers, #1771), and the engine's siblings_of they used. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>