fix how percentage layouts are calculated
This commit is contained in:
parent
97d9996160
commit
f8bfdaf892
@ -182,23 +182,42 @@ Cycle(Editor* ed, Inputs* inputs)
|
||||
|
||||
BeginBuild();
|
||||
|
||||
Panel("##panel_1", 1.0, 0.33, A2D.X, Vec4(0.2, 0.5, 0.8, 1.0));
|
||||
Panel("##panel_1", 1.0, 0.3, A2D.X, Vec4(0.2, 0.5, 0.8, 1.0));
|
||||
{
|
||||
Panel("##sub_panel_1", 0.125, 1.0, A2D.X, Vec4(0.2, 0.4, 0.5, 1.0));
|
||||
EndPanel();
|
||||
|
||||
Panel("##sub_panel_1", 0.125, 1.0, A2D.X, Vec4(0.2, 0.4, 0.5, 1.0));
|
||||
EndPanel();
|
||||
|
||||
Panel("##sub_panel_2", 0.675, 1.0, A2D.X, Vec4(0.9, 0.6, 0.5, 1.0));
|
||||
EndPanel();
|
||||
|
||||
Panel("##sub_panel_3", 0.2, 1.0, A2D.X, Vec4(1.0, 0.4, 0.5, 1.0));
|
||||
EndPanel();
|
||||
Panel("##sub_panel_2", 0.675, 1.0, A2D.X, Vec4(0.9, 0.6, 0.5, 1.0));
|
||||
EndPanel();
|
||||
|
||||
Panel("##sub_panel_3", 0.2, 1.0, A2D.X, Vec4(1.0, 0.4, 0.5, 1.0));
|
||||
EndPanel();
|
||||
}
|
||||
EndPanel();
|
||||
|
||||
Panel("##panel_2", 1.0, 0.33, A2D.X, Vec4(0.5, 0.2, 0.45, 1.0));
|
||||
Panel("##panel_2", 1.0, 0.3, A2D.X, Vec4(0.5, 0.2, 0.45, 1.0));
|
||||
{
|
||||
|
||||
}
|
||||
EndPanel();
|
||||
|
||||
Panel("##panel_3", 1.0, 0.33, A2D.X, Vec4(0.3, 0.7, 0.6, 1.0));
|
||||
Panel("##panel_3", 1.0, 0.4, A2D.X, Vec4(0.3, 0.7, 0.6, 1.0));
|
||||
{
|
||||
Panel("##sub_panel_6", 0.25, 1.0, A2D.Y, Vec4(0.33, 0.4, 0.8, 1.0));
|
||||
{
|
||||
Panel("##sub_sub_panel_1", 1.0, 0.4, A2D.X, Vec4(1.0, 0.0, 0.0, 1.0));
|
||||
EndPanel();
|
||||
Panel("##sub_sub_panel_2", 1.0, 0.6, A2D.X, Vec4(1.0, 1.0, 0.0, 1.0));
|
||||
EndPanel();
|
||||
}
|
||||
EndPanel();
|
||||
|
||||
Panel("##sub_panel_7", 0.55, 1.0, A2D.X, Vec4(0.9, 0.2, 0.3, 1.0));
|
||||
EndPanel();
|
||||
|
||||
Panel("##sub_panel_8", 0.2, 1.0, A2D.X, Vec4(0.2, 0.76, 0.5, 1.0));
|
||||
EndPanel();
|
||||
}
|
||||
EndPanel();
|
||||
|
||||
BeginFrame(&ed.rd);
|
||||
|
||||
@ -46,6 +46,7 @@ struct UIContext
|
||||
HashTable!(UIHash, UIItem*) items;
|
||||
Arena arena;
|
||||
Renderer* rd;
|
||||
Inputs* inputs;
|
||||
|
||||
UIBuffer buffer;
|
||||
|
||||
@ -193,10 +194,11 @@ SetLayoutAxis(Axis2D axis)
|
||||
}
|
||||
|
||||
void
|
||||
BeginBuild()
|
||||
BeginBuild(Inputs* inputs)
|
||||
{
|
||||
UIContext* ctx = GetCtx();
|
||||
|
||||
ctx.inputs = inputs;
|
||||
ctx.buffer.count = 0;
|
||||
|
||||
ctx.root = Root();
|
||||
@ -247,26 +249,16 @@ CalcPercentageSizes(UIItem* item)
|
||||
{
|
||||
if (!Nil(item))
|
||||
{
|
||||
CalcPercentageSizes(item.first);
|
||||
CalcPercentageSizes(item.next);
|
||||
|
||||
static foreach(axis; A2D.min .. A2D.max)
|
||||
{
|
||||
if (item.size_info[axis].type == ST.Percentage)
|
||||
{
|
||||
UIItem* parent;
|
||||
for(UIItem* p = item.parent; !Nil(p); p = p.parent)
|
||||
{
|
||||
if (p.size_info[axis].type == ST.Pixels)
|
||||
{
|
||||
parent = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
item.size.v[axis] = parent.size_info[axis].value * item.size_info[axis].value;
|
||||
item.size.v[axis] = item.parent.size.v[axis] * item.size_info[axis].value;
|
||||
}
|
||||
}
|
||||
|
||||
CalcPercentageSizes(item.first);
|
||||
CalcPercentageSizes(item.next);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user