Re: [csswg-drafts] [css-display] How does block inside inline affect the box tree, exactly?

The Working Group just discussed `How does block inside inline affect the box tree, exactly?`, and agreed to the following resolutions:

* `RESOLVED: In a block-in-inline split, the block is inside the inline in the box tree, and is a sibling of the two fragments of the inline in the fragment tree`
* `RESOLVED: A multicolumn spanner that splits and inline is inside of the inline box tree and a sibling to the fragment in the fragment tree`

<details><summary>The full IRC log of that discussion</summary>
&lt;dael> Topic: How does block inside inline affect the box tree, exactly?<br>
&lt;dael> github: https://github.com/w3c/csswg-drafts/issues/1477<br>
&lt;fantasai> Possible practical implication of previous issue might be getComputedStyle on ::marker?<br>
&lt;dael> TabAtkins: I recommend looking at the first comment because Loirooriol has a great markup example.<br>
&lt;dael> TabAtkins: Basic idea, in the box tree there's a span and a div list inside it is it an inline boc with a block box inside and during fragmentation we split that or does the splitting happen at box tree time?<br>
&lt;dael> florian: Observable?<br>
&lt;dael> TabAtkins: Effects how other properties are defined so yes in thoery. I don't think any property could be used as a probe of it. No one uses exact box tree for spec<br>
&lt;dael> ??: Saying splitting happens in the box tree is more consistant because operations happen in the order. If splitting is in box tree we need some kind of exception. CSS 2.1 doesn't distinguish between when it happens so it's like it happens between boxes.<br>
&lt;dael> TabAtkins: Impl information in FF eq they split and special case text-decoration so it propagates down.<br>
&lt;dael> koji: WE splits spans, wrap it in anon box, and for the box we split. That last part is same as Geck.<br>
&lt;astearns> s/??/Loirooriol<br>
&lt;fantasai> https://www.w3.org/TR/css-break-3/#break-decoration might need an update<br>
&lt;dael> TabAtkins: Our layout structure doesn't distinguish boxes and fragments either. Hard to argue we have one behavior or the other.<br>
&lt;dael> fremy: Not sure why we need to know<br>
&lt;dael> TabAtkins: Effects how we write specs.<br>
&lt;dael> iank_: Anything we do with block behavior should stay.<br>
&lt;dael> TabAtkins: Impl details don't matter, it's thetheoretical model. Being closer to impl matters. WE can live with either model. We just need to decide.<br>
&lt;dael> florian: Which makes spec writing easier?<br>
&lt;dael> TabAtkins: Split not until fragment time is easier I believe. Makes text-decoration easy. Other cases that treat them as a single thing work fine in that model.<br>
&lt;dael> dbaron: I worry a bit about making something trivial to define if it's actually more complex then impl. I think it's better if the thigns easy in impl are easy in spec and hard in impl are hard in spec.<br>
&lt;dael> TabAtkins: Agree.<br>
&lt;dael> florian: That's say split boxes not fragments.<br>
&lt;dael> fantasai: Shows up for box-decoration break.<br>
&lt;dael> ??: If splitting happens in box inline assumes if you general boxes in that case it uses the box. If one of the two inline boxes are choosen it's strange.<br>
&lt;astearns> s/??/Loirooriol<br>
&lt;dael> TabAtkins: And both are the principle box because both get all properties<br>
&lt;dael> fantasai: I'd prefer at fragment tree time and if we want to change the parentage maybe that's senseible. I don't think split in the box tree. And I think of this as framentation so it makes sense to say that's what's happening.<br>
&lt;dael> fantasai: Box decoration break should be controlling behavior at these breaks. We're slicing by default but may want to switch to clone. THis is how we define howt he side of a box that has been split are drawn and if we don't we have to define that it behaves as a fragment. If it is a fragment it' snot a special case.<br>
&lt;dael> florian: Split at fragment level makes a lot more sense. Seems to be a difference with impl that don't distinguish, but dbaron point earlier that this makes it easier to define hard to impl...<br>
&lt;dael> fantasai: Does it? There's a reason why we try to discuss and get review and it's to point out where model doesn't make sense. I see some reasons for define as fragments and only theoretical reason for the other.<br>
&lt;fantasai> s/reason/worries/<br>
&lt;dael> Rossen: The model in fragmentation spec makes a lot of sense to me. Early stages of writing draft there was back and forth for what is a fragments and what's a principle box. As an impl it was a time somewhat odd to map and refer to things not in our impl. There's not a principle box in the impl nor do we call anything a fragment, but the model matched well.<br>
&lt;dael> Rossen: If the model in the fragmentation spec doesn't make sense what do you propose to change?<br>
&lt;dael> fantasai: Didn't say it doesn't make sense? Issue is about block and inline splits. Is inline fragmented or of many boxes? A lot of impl has a structure that's not one or the other. We need the theoretical set up here.<br>
&lt;dael> iank_: Eventually we want to move to a model where we use fragment so I'm fine that way.<br>
&lt;dael> iank_: We don't want to do inline splitting at the box tree level eventually.<br>
&lt;dael> florian: I think so long as we have a conceptual model where boxes and fragments are different this should be at the box level. If we only want to alk baout boxes b/c matches impl that's a different conversation.<br>
&lt;dael> dbaron: I think there's another view to it then not having both concepts which is that you can keep boxes and fragments as terms but view the fragments as what you get when you split boxes rather then a later process stage.<br>
&lt;dael> florian: I't s aprocessed box?<br>
&lt;dael> fantasai: Isn't that what they are?<br>
&lt;dael> dbaron: That's what I thought until a few weeks ago. However people have said things that have made me think differently, including this issue.<br>
&lt;dael> florian: I don't think fragments are boxes that have bene processed in a particular way.<br>
&lt;dael> TabAtkins: As per spec you are right. fragment tree is the result of layout on boxes. You get a different tree out of that.<br>
&lt;dael> florian: Fragments is not a short term to mean a box piece. It' snot a whole buch of boxes some of which are fragments.<br>
&lt;dael> fantasai: A box is composed of one or more fragments.<br>
&lt;dael> florian: But later in the process we don't have boxes and fragments.<br>
&lt;dael> dbaron: You have a box tree and you go to a fragment tree by splitting things up.<br>
&lt;dael> dbaron: A box corrisponds to one or more fragments. If the box has children those are in one or more of the children.<br>
&lt;dael> fantasai: This is the case where it's not clear that's happening.<br>
&lt;dael> TabAtkins: In multicol even childs might fragment. putting some children in one fragment and one in the next is fair.<br>
&lt;dael> dbaron: If box a is parent of box b then any fragment of box b will have a parent of fragment a.<br>
&lt;dael> fantasai: How we lay this out they don't act like their the child of the parent. Layout wise it behaves like a sibling and lays out that way. Same is true of block. It lays out as if it's a sibling of the anon block before and after.<br>
&lt;dael> florian: It changes the varient but it doesn't change that you can consider the fragment tree as a processed version of the box tree. There's a little reparenting but not a lot.<br>
&lt;dael> Rossen: I'm trying to get to a model that makes sense. What's the model we define in the frag spec in your mind?<br>
&lt;dael> dbaron: I didn't see the fragmentation spec as contridicting my model.<br>
&lt;dael> fantasai: It doesnt' because it doesn't talk about columns.<br>
&lt;dael> TabAtkins: It's fragmenting easy cases.<br>
&lt;fantasai> s/columns/block-in-inline splits and column spanners/<br>
&lt;dael> Rossen: Is it easy? If you have a whole bunch of open inline elemnts, open spans, and text inside that generates some line effects and then a block element that breaks this line flow. At that moment what do you have?<br>
&lt;dael> dbaron: In my mental model? One of the things about the blocks inside is that some ways they act like not a child like backgrounds but for relpos they act like they are.<br>
&lt;dael> Rossen: If an inline element was an anchor open before and close after the block<br>
&lt;dael> dbaron: I think it's not dom event propagation.<br>
&lt;dael> Rossen: But it's type of hit test<br>
&lt;dael> florian: When you say some aspects siblings and some not, it's that the same as in box tree descendents and in fragments it's siblings?<br>
&lt;dael> dbaron: If you have it as though there's a thing there is some ways and not others it's easier to have the object there and disable features then not have it there and reconjur it when you need it.<br>
&lt;dael> fremy: If you have regions it's in 2 elements and your model can't have regions. They're in differnet places of the tree and they'll have fragments that aren't related.<br>
&lt;dael> dbaron: It was a model desc how fragmentations worked and I didn't mean you have to foloow it always. Still feels weird to me and I didn't know the spec was different until recently<br>
&lt;dael> florian: For Geck these are siblings or one child? The block that intrupts inlines.<br>
&lt;dael> dbaron: Child of the inline but it is a child of the block fragment of the inline and those are kind of special.<br>
&lt;dael> florian: BUt that's not a conflict. You have a single data structure that represents both box and fragment tree. In that single data structure there's a thing that keeps the parenting relationship. In box tree they're parented in fragment not. THe object is present in one of the two trees. You're just overlapping the two so it's difficult to talk abotu one concept without hte other.<br>
&lt;dael> Rossen: Is there a model we can agree on?<br>
&lt;dael> dbaron: I'm fine resolving on it. I just want to recognize it's pretty substantive decision.<br>
&lt;dael> Rossen: With that warning. What do people think? Ready to resolve?<br>
&lt;dael> TabAtkins: If people agree, yeah?<br>
&lt;dael> Rossen: Objections?<br>
&lt;dael> TabAtkins: Prop: A block inside an inline is a descendant in the box tree and a sibling in the fragment tree.<br>
&lt;dael> fantasai: And the inline is a single box that has been fragmented.<br>
&lt;dael> Rossen: You're agreeing<br>
&lt;dael> fantasai: They're two things.<br>
&lt;dael> astearns: It's not just the box that the block is a sibling.<br>
&lt;dael> florian: You're agreeing, there's wordsmithing.<br>
&lt;dael> fantasai: I want it clear that there's a single inline that has been fragmented. It's saying the block is a sibling that's a fragment which is a fragment and there's a following fragment doesn't say it's the same box.<br>
&lt;dael> Rossen: Prop: Blocks inside of...<br>
&lt;dael> Rossen: Objections to what fremy is typing?<br>
&lt;TabAtkins> &lt;inline>foo&lt;block>bar&lt;/block>baz&lt;/inline> &lt;== 'block' is a child of 'inline' in the box tree; 'block' is a sibling of two fragments of 'inline' in the fragment tree.<br>
&lt;fantasai> proposed resolution: In a block-in-inline split, the block is inside the inline in the box tree, and is a sibling of the two fragments of the inline in the fragment tree<br>
&lt;fremy> Proposal: There is one inline box containing one block box (in the box tree). In the fragment tree, there are two inline fragments, sibling on each side of the block fragment.<br>
&lt;dael> Rossen: What fantasai said is the same. Objections to In a block-in-inline split, the block is inside the inline in the box tree, and is a sibling of the two fragments of the inline in the fragment tree<br>
&lt;dael> RESOLVED: In a block-in-inline split, the block is inside the inline in the box tree, and is a sibling of the two fragments of the inline in the fragment tree<br>
&lt;dael> fantasai: One more. Same applies to column spanners splitting a box. Same logic applies.<br>
&lt;dael> florian: Same problem but column spanner may break multi levels of parents.<br>
&lt;dael> Rossen: They can already have multiple.<br>
&lt;dael> Rossen: Agreed?<br>
&lt;dael> Rossen: Prop: A multicolumn spanner that splits and inline is inside of the inline box tree and a sibling to the fragment in the fragment tree<br>
&lt;dael> RESOLVED: A multicolumn spanner that splits and inline is inside of the inline box tree and a sibling to the fragment in the fragment tree<br>
&lt;dael> fantasai: We forgot anonymous boxes<br>
&lt;dael> &lt;br type="lunch"><br>
</details>


-- 
GitHub Notification of comment by css-meeting-bot
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/1477#issuecomment-380771705 using your GitHub account

Received on Thursday, 12 April 2018 11:23:33 UTC