4344 Commits

Author SHA1 Message Date
appleguy
fb6cad941f [ASDisplayNode+Layout] In layoutThatFits:, check and use _pending layout if valid. (#413)
I believe this check is supposed to be here. Unit tests pass with it in place.
Without it, calling layoutThatFits: (as ASDataController does) and then calling
it again later (as ASCollectionNode does when answering the sizeForItem: call)
will recompute the layout, potentially on main.

This seems to have more of an impact / benefit for Yoga layouts, but I don't think
its benefit is exclusive to them.
2017-07-05 10:02:38 +00:00
Huy Nguyen
5d72a76fb9 Integrate Weaver into ASDKGram (#412)
* Integrate Weaver into ASDKGram

* Update the license of app delegate
2017-07-04 12:20:17 +00:00
Adlai Holler
8ec4b312cf Overhaul our logging, add activity tracing support. (#399)
* Improve the os_log and os_activity integration

* Address feedback from Scott and Huy
2017-07-03 19:03:26 -07:00
appleguy
2cda73a334 [ASTextNode2] Provide compiler flag to enable ASTextNode2 for all usages. (#410)
* [ASTextNode2] Provide compiler flag to enable ASTextNode2 for all usages.

The runtime switch is helpful, but is too slow to be shipped in a large
production application where startup time is carefully optimized.

Although this doesn't pass text-related snapshot tests when enabled, it
does allow apps to rely on built-in components like ASButtonNode using
the same text stack as when they are manually creating ASTextNode2
instances.

A simpler approach would be to use a #define ASTextNode ASTextNode2,
but this would create unusual keyword highlighting in code referencing
ASTextNode. However, because it would be less invasive and this is
not on by default, we could do that instead if preferred.

* Update AsyncDisplayKit.h

* [ASTextNode2] Improve naming and documentation of ASTEXTNODE_EXPERIMENT_GLOBAL_ENABLE

* [ASTextNode2] CHANGELOG.md for #410.
2017-07-02 21:40:51 -07:00
appleguy
c70a97d28f [ASTextNode2] Add initial implementation for link handling. (#396)
* [ASTextNode2] Add initial implementation for link handling.

This is a fairly basic first step to achieving feature parity between ASTextNode2
and ASTextNode. It does not yet do the 9-box detection of links, and there is
other code from ASTextNode that could be shared to improve this.

However, in the interest of getting a shippable implementation running as soon
as possible, I'm hoping to quickly refine this. Then we can continue improving
it based on the original ASTextNode with the benefit of testing UI against it.

* [ASTextNode2] Refine implementation of link handling.
2017-07-02 19:50:59 -07:00
appleguy
1d1a3787c2 [Yoga] Refine the handling of measurement functions when Yoga is used. (#408)
This ensures that measure funcs are not set for container / empty spacer
nodes, because Yoga has more internal capabilities than layoutThatFits:
knows about.

Avoid need for the main layout pass to directly call setup for measure
funcs, by making it an implicit part of .yogaLayoutInProgress =.

Tear down the measure func after the layout pass to avoid retain cycle.
2017-07-02 13:01:07 -07:00
Adlai Holler
fcb293e049 Fix issue where supplementary elements don't track section changes (#404)
* Fix collection view supplementary issue

* Add a fast-path

* Remove the old index path entry unconditionally

* Handle overwriting bug
2017-07-01 10:55:59 -07:00
appleguy
5e288c596e [Documentation] Improve description of synchronous concurrency with screenshot and video link. (#406)
* Add screenshot for synchronous concurrency description

* Include reference to new image, improve text of synchronous concurrency doc
2017-07-01 13:34:35 +01:00
Garrett Moon
f71963d717 Fixed changelog for real 2017-06-30 14:37:48 -07:00
Garrett Moon
3c04c9407a Fixed changelog 2017-06-30 13:44:50 -07:00
Garrett Moon
151d056d7a Update to the latest betas of PINRemoteImage and PINCache (#403) 2017-06-30 13:41:27 -07:00
Garrett Moon
55ea108e32 Update for 2.3.4 2017-06-30 13:23:54 -07:00
Adlai Holler
58641a85ab Minor cleanup work (#402) 2017-06-30 16:26:19 +01:00
Huy Nguyen
c603ef0ef2 [ASLayout] Revisit the flattening algorithm (#395)
* Implement tests for the layout flattening process

* Refactor the flattening algorithm
- Remove flattened flag
- No more self check
- Stop traversing a layout tree branch when hits a displaynode node.
- Reuse as many existing ASLayout objects as possible

* Update changelog

* Ceil position values before comparing

* Explain why sublayout elements must be retained
2017-06-29 18:39:04 +01:00
Huy Nguyen
23ee9de615 If a layout has no sublayouts, don't bother initializing its rect table (#394) 2017-06-29 15:09:49 +01:00
Huy Nguyen
f7a6b7ae84 Fix documentation of ASLayout retainSublayoutLayoutElements (#393) 2017-06-28 16:14:05 +01:00
Michael Schneider
f257193e69 Fix compiling ASDimension if Yoga enabled (#389)
Exposes the <UIKit/UIGeometry.h> otherwise under some circumstances UIEdgeInsets is not defined.
2017-06-26 16:59:24 -07:00
Benjamin Chang
b14ea8b95d Comments to reflect code in ASTableNode performBatchUpdates #trival (#388) 2017-06-26 17:01:10 +01:00
Huy Nguyen
6113a33904 Remove unnecessary frame setting in ASCellNode (#387) 2017-06-25 14:59:50 +01:00
Andrew Yates
0c72c4eaf0 Fix for Video Table Example Building (#383)
* Fix for Video Table Example Building

* Adjust to use setPreferredSize

* Change video URLs out for ones that still exist

* Update header

* Forgot to remove setHeight:

* Extract URLs

* Update license
2017-06-24 23:36:22 +01:00
Huy Nguyen
ae7c96a402 Horrible spelling mistake (#384)
Better fix it ASAP!
2017-06-23 16:00:10 +01:00
Huy Nguyen
df01adc116 ASDimensionMake to be more lenient #trivial (#382)
* ASDimensionMake to be more lenient

Don't throw assertion when the string is invalid

* Fix unit test
2017-06-23 15:14:39 +01:00
Huy Nguyen
992df78801 Gate orphaned node detector behind YOGA flag #trivial (#380)
* Gate orphaned node detector behind YOGA flag

* Tiny indentation change
2017-06-22 19:12:41 +01:00
Huy Nguyen
e264bb7eb0 [Event Log] Log ASM flag when modify subnodes #trivial (#379)
* Log ASM flag when add subnode

* Log other subnode modifications as well
2017-06-22 07:30:51 -07:00
Hannah Troisi
2dca3e5e76 [ASDataController] Add event logging for transaction queue flush duration #trivial (#334)
* Add event logging for transaction queue flush duration

* address @appleguy's comments

* Improve formatting of Event Log messages

* Small indentation fix in ASDataController
2017-06-21 22:09:35 +01:00
Adlai Holler
5357d259fa Add new workspaces for tests for different integrations (#377) 2017-06-21 11:06:43 -07:00
Michael Schneider
e503ad5e19 Fix imageModificationBlock doc (#376) 2017-06-20 23:16:55 +01:00
Michael Schneider
0a7f8ea1d6 [ASImageNode] Add documentation for image effects #trivial (#263)
* Add documentation for doing image effects

* Link to image modification documentation in the image node documentation
2017-06-20 20:02:25 +01:00
Adlai Holler
326925839d Fix double-load issue with ASCollectionNode (#372)
* Fix double-reload issue with ASCollectionNode

* Add a message to the change pile

* Fix some license headers

* Address feedback
2017-06-19 14:18:56 -07:00
Adlai Holler
4829a8643d Improve System Trace Implementation #trivial (#368)
* Improve the kdebug, system trace integration

* Remove superseded subsystem

* Address review comments

* Please the license header gods

* Address harder

* Fix node block retaining collection view
2017-06-19 10:14:39 -07:00
Martin Kelly
5f42f9354f FIXED Typo (#371)
Contet -> Context
2017-06-19 06:55:53 -07:00
appleguy
8c33a617ed [Yoga] Delete YOGA_TREE_CONTIGOUS gating and permanently enable. (#370)
[Yoga] Delete YOGA_TREE_CONTIGOUS gating and permanently enable. #trivial
2017-06-18 18:18:59 -07:00
appleguy
486410d7d6 [Yoga] Minimize number of nodes that have MeasureFunc set on them. (#369)
This has one important benefit: fixing the stretching behavior of spacer nodes.

In addition, it should help efficiency of Yoga and certainly minimize calls
to layoutThatFits:.

Next up for Yoga is a mostly-red diff, deleting the non-Contiguous code branches.
2017-06-18 18:18:12 -07:00
Andrew Yates
46c4359cc1 Updates ASDKGram to use IGListKit 3.0.0 (#367) 2017-06-17 23:01:54 -07:00
Adlai Holler
d9dec8fdf9 Fix memory leaks, add section-object support to new test harness (#360) 2017-06-16 09:25:16 -07:00
appleguy
55928f343d [Yoga] Rewrite YOGA_TREE_CONTIGUOUS mode with improved behavior and cleaner integration (#343)
* [Yoga] Rewrite YOGA_TREE_CONTIGUOUS mode with support for mixing with ASLayoutSpec.

After experimentation with the ASYogaLayoutSpec (or non-contiguous) approach to
integrating Yoga, test results and feedback from the authors of Yoga have shown
that this approach can't be made completely correct,

There are issues with some of the features required to represent Web-style
flexbox; in particular: padding, margins, and border handling have varience.

This diff is a first step towards a truly correct and elegant implementation of
Yoga integration with Texture. In addition to reducing the footprint of
the integration, which is an explicit goal of work at this stage, these changes
already support improved behavior - including mixing between ASLayoutSpecs
even as subnodes of Yoga layout-driven nodes, in addition to above them. Yoga
may be used for any set of nodes.

Because Yoga usage is limited at this time, it's safe to merge this diff and
further improvements will be refinements in this direction.

* [ASDKgram] Add Yoga layout implementation for PhotoCellNode.

* [Yoga] Final fixes for the upgraded implementation of the Contiguous layout mode.

* [Yoga] Add CHANGELOG.md entry and fix for Yoga rounding to screen scale.

* [Yoga] Minor cleanup to remove old comments and generalize utility methods.
2017-06-14 19:36:13 -07:00
Michael Schneider
13f6f14e9f Use ASTableView tableNode property instead of calling ASViewToDisplayNode (#361) 2017-06-14 19:26:43 -07:00
Archimboldi Mao
a15a67c3ce [Docs] Update 'Corner Rounding' document for Texture 2 (#359)
* Texture 2.0 has been released.

The document should be removed the expected.

* Remove duplicate words.

* Texture 2.0 has been released.

The document should be removed the expected.

* Remove duplicate words.
2017-06-14 17:51:02 -07:00
appleguy
81def94f6f [ASTraitCollection] Convert ASPrimitiveTraitCollection from lock to atomic. (#355)
* [ASTraitCollection] Convert ASPrimitiveTraitCollection from lock to atomic.

This resolves a deadlock case: https://github.com/TextureGroup/Texture/issues/353

* [ASTraitCollection] Use assignment operator instead of .store() for C++ atomic.
2017-06-14 13:55:52 -07:00
appleguy
dc179e53e7 Update resources.md (#363) 2017-06-13 23:46:25 -07:00
Adlai Holler
6b3f8f8ad7 Add support for keeping letting cell nodes update to new view models when reloaded. #trivial (#357)
* Add support for skipping reload if node decides it is compatible with new view model also

* Sort things right

* Put the order back

* No need for redundant expectation

* Fix license header

* Fix comment
2017-06-13 10:10:37 -07:00
Hannah Troisi
8861161d6c [Performance] Convert ASLayoutElementSize to atomic #trivial (#331)
* [Performance] Convert ASLayoutElementSize to atomic

* [ASLayoutElementStyle] Put locks around setter methods.

* Also add lock to setSize: internal method.
2017-06-12 21:31:37 -07:00
Adlai Holler
83111de0cc Add first-pass view model support to collection node. #trivial (#356)
* Add first-pass view model support for collection node. Much more to come!

* Address issues

* Update the gorram license header

* Dear lord
2017-06-12 16:50:33 -07:00
Adlai Holler
c297060113 Add a unit test for double-initial-load issue (#352) 2017-06-12 13:13:49 -07:00
Levi McCallum
267fe6e23b Fix title in changelog (#350) 2017-06-12 00:30:35 -07:00
Adlai Holler
8af1538a5b Add a Flag to Disable Main Thread Assertions #trivial (#348)
* Add a thread-flag for disabling main thread assertions

* Fix the license header
2017-06-11 18:53:20 -05:00
Adlai Holler
69e69873cc Migrate to Latest OCMock, Demonstrate Improved Unit Testing (#347)
* Update OCMock 2.2 -> 3.4

* Clean up and port ASMultiplexImageNodeTests

* Clean up

* Be stricter about order

* Log change

* Update the licenses #important

* Update the license headers more
2017-06-11 11:41:30 -05:00
Adlai Holler
c9e4b98a55 Upgrade ASLayoutElementContext to an Object #trivial (#344)
* Upgrade ASLayoutElementContext to an object

* Address feedback from Huy
2017-06-10 00:25:39 -05:00
Huy Nguyen
05e9bdd092 Small changes required by the coming layout debugger (#337)
* Small changes required by the layout debugger
- `ASDisplayNode` can be told to not flatten its layout immediately but later on. The unflattened layout is also stored in a separate property. It's needed for inspecting not only display nodes but also layout specs used to compute a layout tree.
- `ASLayout` can be told to always retain its sublayout elements. This is needed especially for layout specs since they are usually not retained after an ASLayout was computed.

* Update CHANGELOG

* Address comments
2017-06-08 10:47:50 -07:00
Michael Schneider
13c467b2f4 Fix internal Linter warnings #trivial (#340)
* Fix internal Linter warnings

* Remove explicit copy for block as let us just use the default one
2017-06-08 10:45:03 -07:00