Refining LD v3 in response to user input and reported crashes.
After a change in how Undo groups are created, some Shape objects weren’t properly modifying their rigged objects when they were resized. I completely re-wrote the code that controls rigged Shapes and how they respond to changes, also ensuring that rigged Shapes are “frozen” when their parent Shape is selected, making it easier to edit the parent Shape (this follows the established behavior of Units, Rails, and Lifts with their rigged objects).
Eliminated a bug that could have resulted in Plot renders and Shape images being deleted if iCloud sync was being used. Because images sync using the Apple ubiquity framework (which works in the background all the time) and Core Data syncs using Ensembles (which only syncs while the app is running), launching LD would trigger an image cleanup event that would check to see if images were associated with Plots or Shapes that potentially didn’t exist yet on that device. Also, I defined more deliberately when sync could be triggered, preventing it from syncing while the user is changing something, and vice versa. Last, I removed a bit of code that could cause a crash when first turning iCloud sync on.
I’ve made several additions to how I receive user crash reports, so they now include important details about user actions that will help me track down problems. This will mean faster and easier bug fixes moving forward.
Show and Plot search
Fixed a bug where Show and Plot search fields could become unresponsive.
Fixed a problem with sending an email containing a Show with un-rendered images.
Selecting multiple objects that weren’t Units, then adding Units to the selection with the detail table open, would cause crash.
Fixed a potential issue with swapping Shape objects.
Due to an oversight, the Shape hinge button had a yellow background.