* Faster collection operations
* Fix a few things
* Put the stupid semicolon
* Address warning
* Cut down retain/releases during collection operations
* Update CHANGELOG.md
- After #706, a layout pass is forced on an ASM-enabled node that enters preload state to make sure that its subnodes can start preloading as well. However, when the node is visible, a (coalesced, thus more efficient) layout pass will be triggered by CA soon anyways, so rely on it instead.
* [ASTraitCollection] Add missing properties to ASTraitCollection
* ASTraitCollection now completely reflects UITraitCollection
* Add ASContentSizeCategory enum that corresponds to
UIContentSizeCategory and can be used inside a struct.
* * Remove enum ASContentSizeCategory.
* Use __unsafe_unretained UIContentSizeCategory instead of the enum.
* Added ASPrimitiveTraitCollection lifetime test
* Changes requested at code review:
* Restore one of the ASTraitCollection constructors with a deprecation notice.
* Clean up API by the separation of tvOS-specific interfaces.
* Use [NSString -isEqualToString:] for ASPrimitiveContentSizeCategory equality tests for better readability.
* Encapsulate fallback logic for UIContentSizeCategoryUnspecified.
* Fix failing test
* Add "ASGraphicsContext" to skip copying our rendered images
* Zero the buffer before making a context
* Update license header
* Update dangerfile
* Make it a runtime flag
* Restore GState for good measure
* Free buffer if end without image
* Enable the experiment, and cut out the middle-man
* Fix typo
* Add support for interactive moves
* Enable drag & drop in collection view example
* Update changelog
* Change the gating logic to match UIKit
* Add a warning when we prevent interactive movement due to async layout
* Reimplement ASRectTable using unordered_map to avoid obscure NSMapTable exception.
The new class is called ASRectMap, which patterns alongside ASIntegerMap in both name and implementation.
After some pretty detailed investigation, including study of open-source reimplementations
of Foundation, the best lead I've found on the NSMapTable exception is that
some NSPointerFunction types are not fully supported. Strangely, the ones being used
do seem to work fine almost all of the time.
The main concern is the Struct memory type, which is not officially re-declared in
NSMapTable, and as such the documentation claims that there may exist some
combinations of NSPointerFunction that are not supported.
Because the exception is occurring frequently enough to be a concern (in the hundreds
to low thousands, though only 50 a day) - I decided to replace NSMapTable entirely
in order to ensure full correctness.
"*** -[NSMapTable initWithKeyPointerFunctions:valuePointerFunctions:capacity:] Requested configuration not supported."
* Fix Xcode project
- Fix an insta-crash that's caused by Webservice.load method to call its completion block off the main thread.
- Fix incorrect http status code check.
- Bump the deployment target to get the project compiling.
* Revert "Adds support for specifying a quality indexed array of URLs (#557)"
This reverts commit 3c77d4a5da44c46c7b80b2a627c95389b7d6352d.
* Add CHANGELOG entry
* Add unit tests for ASScrollNode
* Make sure ASScrollNode's size is clamped against its size range
* Invalidate ASScrollNode's calculated layout if its scrollable directions changed
* Update comment
* Update CHANGELOG
* Address Adlai's comments
Before:
- Even if a pending layout was applied before, it'll be unnecessarily applied again in next layout passes and cause `-calculatedLayoutDidChange` being called multiple times.
After:
- If a pending layout was applied, the calculated layout will not be ignored but reused, if possible, in next layout passes.
Test plan: testSetNeedsLayoutAndNormalLayoutPass in #424.
When Obj-C is selected on this page, the bottom half of the documentation is missing. When Swift is selected, malformed content appears where the documentation is nested inside the code block.
Repro'd here in Safari and Chrome: http://texturegroup.org/docs/containers-asnodecontroller.html
I think the bug is that <PhotoCellNode> is being parsed as an HTML tag, and this should fix it.
* Make our async deallocation functions take a double pointer, so we can be sure we've released before the queue drains
* Make it a class property
* Fix the return type
* Use a locker
* Improve release notes
* [ASCollectionView] Ensure -invalidateFlowLayoutDelegateMetrics is called for UIKit passthrough cells.
This allows rotation to work properly when rotating UIKit passthrough
cells that need to change width.
* [ASCollectionView] No need to verify node is still in model to handle view-only notifications.