Skip to content

Commit 94101ad

Browse files
committed
Allow a root being a child of a root or container
1 parent 19c56f2 commit 94101ad

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/FubarDev.LayoutEngine/LayoutBuilder/LayoutBuilderContainer.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,24 @@ public LayoutBuilderContainer Height(AttachedSize height)
187187
return this;
188188
}
189189

190+
public static LayoutBuilderContainer operator <<(LayoutBuilderContainer container, LayoutBuilderRoot item)
191+
{
192+
if (container._container != null)
193+
{
194+
throw new InvalidOperationException("Cannot modify after building.");
195+
}
196+
197+
var oldFactory = container._containerFactory;
198+
container._containerFactory = overlapLookup =>
199+
{
200+
var newContainer = oldFactory(overlapLookup);
201+
newContainer.Add(item.Build());
202+
return newContainer;
203+
};
204+
205+
return container;
206+
}
207+
190208
public static LayoutBuilderContainer operator <<(LayoutBuilderContainer container, LayoutBuilderContainer item)
191209
{
192210
if (container._container != null)

src/FubarDev.LayoutEngine/LayoutBuilder/LayoutBuilderRoot.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ public LayoutBuilderRoot AddOverlap(string overlappedIdentifier, LayoutBuilderIt
107107
return this;
108108
}
109109

110+
public static LayoutBuilderRoot operator <<(LayoutBuilderRoot root, LayoutBuilderRoot item)
111+
{
112+
root._root.Add(item.Build());
113+
return root;
114+
}
115+
110116
public static LayoutBuilderRoot operator <<(LayoutBuilderRoot root, LayoutBuilderContainer item)
111117
{
112118
root._root.Add(item.Build(root._root));

0 commit comments

Comments
 (0)