The problem is that during quit the OS will run a local event loop until we reply to the terminate event. In this local event loop we cannot use performSelector:withObject:afterDelay: but that is required to not block the main dispatch queue.
This would happen if the user manually saved one of the documents with replacements before invoking save all, since the wrong “did save” callback was called when trying to save an unmodified document.
- Path to application is shown in the menu item’s tool tip.
- When menu is shown for multiple file types with different default applications, we show the default applications first.
- Use the potentially localized bundle name rather than file system display name.
- Use bundle identifier to group applications rather than display name: Grouping is done to decide if version number should be shown for the item.
Previously we would try full path, relative path, and just the name. This was done to determine wether or not the display string should include full path details or be limited to the name. The problem is that an excluding glob may require the full path, and would thus not exclude items that did match when using just the item’s name.
Previously it was only available when doing folder searches, since the items are for folder search behavior and results.
However, with “Find All” in document, we get a similar result list from which we may want to copy matches.
For example the following glob will match C++/Objective-C++ source/header files, except those in the ‘vendor’ directory: *.{cc,mm,h}~vendor/**
It is possible to do multiple exclusions, e.g.: src/**~*.log~*.db
It is also possible to start with the exclude operator to negate the pattern (identical to the ! operator).
The exclude operator is not supported inside brace expansion, e.g.: {*.o,*~.nib} will treat it as a literal tilde. Furthermore, placing the tilde last will also treat it as a literal tilde, e.g.: *.txt~
In the exclude pattern, single/double asterisk (*/**) will match hidden files.
We override undo/redo for the file browser so that ⌘Z / ⇧⌘Z will only undo/redo file browser actions when it’s in the responder chain: b9fafd1495
This had the unfortunate side-effect of eclipsing the undo support of descendent views of the file browser, like the field editor used for renaming items.
I mainly dislike the trailing zeroes because CGFloat used to be a float but 1.0 is a double (1.0f would be a float). So better to under-specify and let the compiler figure out the proper type.