Enjoy!
Code:
[r161025] Document picker polish and performance and various other fixes. Configurations: - A few minor tweaks for Xcode 4.3. - Add -DDEBUG and -DDEBUG_$(USER) to INFOPLIST_PREPROCESSOR_DEFINITIONS. Overall: - Fix up new warnings from Xcode 4.3. - Start using the 'context' passing KVO remove method when available. OmniBase: - Fixed System framework detection for Xcode 4.3. - Rewrote OBFinishPorting macros so they emit a string with a specific format into the executable. This allows searching for all uses with: strings MyApp.app/MyApp | grep OBFinishPorting OmniFoundation: - Added OFCheckForInstruments() and make OFObject abort if inline retain counts are on while Instruments is trying to track retains. - Fix parsing for ICU date formats that have quoted dots as literals. - Weakly link new Security.framework symbols for 10.6 compatibility - Added block-based helper to OFXMLElement -addElement:childBlock: OmniFileStore: - Fixed a bug in OFSDAVOperation where it would stream error content from HTTP errors to its target as though it were normal content. - Added block-based asynchronous read/write APIs to OFSFileManager. - Added user default for disallowing our uses of iCloud support completely. - Rewrote uniquification of file names to be done on the action queue, locale/case insensitive. - Added a OFSDocumentStoreScope wrapper object instead of an enum so we can better support multiple ubiquitous scopes. - Updated many OFSDocumentStore methods to take OFSDocumentStoreScope parameters where needed. - Removed file coordination over whole Documents directory since coordinated reads of parent directories don't block anything useful. - Fixed up issues with document renaming - Added more support for avoiding full rescans of containers when just adding a single file. - Only create file items on the main queue, serializing possible updates from background actions. - Deal with missing public UTI for zip more reliably. - Moved OFSDocumentStoreFilter from OmniUI. OmniQuartz: - CALayer animation logging can be configured on a per layer tree basis - Added helpers for caching/flattening/scaling CFImageRefs OmniAppKit: - Fixed #ifdef guarding use of -supplementalTargetForAction:sender:. - Make OAFindController's outlets retained. - Added NSError support in OAScriptToolbarHelper/OAWorkflow. - Improved default indicator buttons and added a new (x) image. - Added -eachAttachment: block iterator to NSAttributedString. - Added NSNib utility methods to help transition to more reasonable retain semantic methods can the old NSBundle methods. - Switched some callers to new NSNib helper methods. - Fixed bug in OAFontDescriptor with changing family name on a descriptor with implied symbolic attributes. - Added OAToolbarItem -menuFormRepresentation for target selection. OmniInspector: - Better handle automatic termination for writing inspector preferences OmniUI: - Re-added images that got accidentally removed - Fixed some leaks - Updated keyboard avoidance handling to deal better with iOS 5.1 - Stacked slices inspectors scroll the first responder into view when the keyboard appears/disappears - Stacked slices inspectors validate available slices more consistently - Document closing activity indicator color can be customized by the document view controller - Handle more types of NSErrors when displaying them. - Added a default tools toolbar item icon - The document store now tells its delegate when an item moved; we move the cached previews rather than regenerating them - Preview generation is now asynchronous with completion handlers, allowing more of it to run on a background queue - Preview image compression and writing is now done on a background queue to keep the UI interactive - Better handle possible crashes in preview generation so we end up with a placeholder on the next run, rather than crashing again on the next run (should this ever happen). - Add a background task while generating a preview so we finish and close the document (lowering our memory use while backgrounded). This also avoids weird race conditions with UIDocument closing and activating when the document is deleted in the backgrounded interval - Report better errors when attempting to open a document that has disappeared (since iTunes writes don't provoke NSFilePresenter/Coordinator right now, sadly). - Deal with oddity in UIDocument where a failed open leaves the document still as a file presenter -- closing the "not open" document fixes it. - Prefer to generate previews for files that are scrolled into view, making preview generation feel faster - Use OFSDocumentStoreFilter to control the visible documents in the picker. - Moved the edit/drag recognizer to the document picker scroll view, now that we have two of them. - Fixed animation/flicker in various duplicating/renaming cases. - Fix updating of the document title toolbar item when renaming documents while they are open. - Improve document picker animation when rotating the device - Duplicate previews when duplicating files rather than generating them by loading the file - Add a confirmation menu when duplicating more than one document at a time - Disable all the support for document picker folders for now - Preview generation uses the improved OQ functions for caching flattened images (meaning they are fully read and rendered off disk). Important for performance and so CGImageRef doesn't get confused if we rename a preview file due to the document file being renamed. - Preview caching tries to deal with /var/mobile vs /var/private/mobile in a more reliably way. - Document renaming now handles hardware, split, undocked keyboards better when transitioning between states and rotating. - Improved document renaming view layout and rotation handling - Added returnKeyType support to OUIEditableFrame - Added OUIEditableFrameTextDid{BeginEditing,EndEditing,Change}Notification - Fixed possible zombie when changing a text attribute over multiple spans - Moved the selection loupe to the root view controller's view rather than the window, lest it be in the wrong coordinate system. - Release the text inspector when it isn't in use -- it isn't used that often and this lowers our memory use. - Made tapping on OUIEditableLabeledValueCell easier (for example, in WebDAV/iDisk setup text fields) - Crossfade the non-document portions of the screen when opening/closing documents. - Fixed renaming of open documents via the file name toolbar item - Improved reliability of Inbox handling and zip extraction when files are tapped on in Mail - Fixed issues with downloading wrappers from WebDAV TextEditor sample: - Fix document open/close animation rects - Fixed leaks - Fixed sizing of the document title toolbar item - Updated for new preview generation API. Added comments for developers doing so in their own apps.
__________________
CTO, The Omni Group
CTO, The Omni Group