Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Unified Diff: sky/specs/style.md

Issue 732243002: Specs: Define when needsLayout is reset (also, some unrelated markdown fixes) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/examples/style/toolbar-layout.sky ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/specs/style.md
diff --git a/sky/specs/style.md b/sky/specs/style.md
index a264bdb8744fecdd1142a761020bd77a8514422e..61ae4b4076a3dea09b15de546fa63c16a018b56a 100644
--- a/sky/specs/style.md
+++ b/sky/specs/style.md
@@ -353,6 +353,7 @@ class StyleNode {
// otherwise, get the default value; cache it; return it
readonly attribute Boolean needsLayout; // means that a property with needsLayout:true has changed on this node or one of its descendants
+ // needsLayout is set to false by the ownerLayoutManager's default layout() method
readonly attribute LayoutManager layoutManager;
readonly attribute LayoutManager ownerLayoutManager; // defaults to the parentNode.layoutManager
@@ -417,7 +418,7 @@ class LayoutManager {
void take(StyleNode victim); // sets victim.ownerLayoutManager = this;
// assert: victim hasn't been take()n yet during this layout
// assert: victim.needsLayout == true
- // assert: an ancestor of victim has needsLayout == this (aka, victim is a descendant of this.node)
+ // assert: an ancestor of victim has node.layoutManager == this (aka, victim is a descendant of this.node)
virtual void release(StyleNode victim);
// called when the StyleNode was removed from the tree
@@ -454,10 +455,11 @@ class LayoutManager {
// returns min-height, height, and max-height, normalised, defaulting to values given in LayoutValueRange
// if argument is provided, it overrides height
+ void markAsLaidOut(); // sets this.node.needsLayout to false
virtual Dimensions layout(Number? width, Number? height);
- // returns { }
+ // default implementation calls markAsLaidOut() and returns arguments, with null values resolved to intrinsic dimensions
+ // this should always call this.markAsLaidOut() to reset needsLayout
// the return value should include the final value for whichever of the width and height arguments that is null
- // TODO(ianh): should we just grab the width and height from assumeDimensions()?
void markAsPainted(); // sets this.node.needsPaint to false
virtual void paint(RenderingSurface canvas);
@@ -536,38 +538,38 @@ StyleDeclaration objects as follows:
* ``content``
* ``title``
These all add to themselves the same declaration with value:
-```css
+```javascript
{ display: { value: null } }
```
* ``img``
This adds to itself the declaration with value:
-```css
+```javascript
{ display: { value: sky.ImageElementLayoutManager } }
```
* ``span``
* ``a``
These all add to themselves the same declaration with value:
-```css
+```javascript
{ display: { value: sky.InlineLayoutManager } }
```
* ``iframe``
This adds to itself the declaration with value:
-```css
+```javascript
{ display: { value: sky.IFrameElementLayoutManager } }
```
* ``t``
This adds to itself the declaration with value:
-```css
+```javascript
{ display: { value: sky.ParagraphLayoutManager } }
```
* ``error``
This adds to itself the declaration with value:
-```css
+```javascript
{ display: { value: sky.ErrorLayoutManager } }
```
« no previous file with comments | « sky/examples/style/toolbar-layout.sky ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698