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();
|
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));
|
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();
|
EndPanel();
|
||||||
|
|
||||||
Panel("##sub_panel_2", 0.675, 1.0, A2D.X, Vec4(0.9, 0.6, 0.5, 1.0));
|
Panel("##panel_2", 1.0, 0.3, A2D.X, Vec4(0.5, 0.2, 0.45, 1.0));
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
EndPanel();
|
EndPanel();
|
||||||
|
|
||||||
Panel("##sub_panel_3", 0.2, 1.0, A2D.X, Vec4(1.0, 0.4, 0.5, 1.0));
|
Panel("##panel_3", 1.0, 0.4, A2D.X, Vec4(0.3, 0.7, 0.6, 1.0));
|
||||||
EndPanel();
|
{
|
||||||
|
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();
|
||||||
|
|
||||||
EndPanel();
|
Panel("##sub_panel_7", 0.55, 1.0, A2D.X, Vec4(0.9, 0.2, 0.3, 1.0));
|
||||||
|
EndPanel();
|
||||||
|
|
||||||
Panel("##panel_2", 1.0, 0.33, A2D.X, Vec4(0.5, 0.2, 0.45, 1.0));
|
Panel("##sub_panel_8", 0.2, 1.0, A2D.X, Vec4(0.2, 0.76, 0.5, 1.0));
|
||||||
EndPanel();
|
EndPanel();
|
||||||
|
}
|
||||||
Panel("##panel_3", 1.0, 0.33, A2D.X, Vec4(0.3, 0.7, 0.6, 1.0));
|
|
||||||
EndPanel();
|
EndPanel();
|
||||||
|
|
||||||
BeginFrame(&ed.rd);
|
BeginFrame(&ed.rd);
|
||||||
|
|||||||
@ -46,6 +46,7 @@ struct UIContext
|
|||||||
HashTable!(UIHash, UIItem*) items;
|
HashTable!(UIHash, UIItem*) items;
|
||||||
Arena arena;
|
Arena arena;
|
||||||
Renderer* rd;
|
Renderer* rd;
|
||||||
|
Inputs* inputs;
|
||||||
|
|
||||||
UIBuffer buffer;
|
UIBuffer buffer;
|
||||||
|
|
||||||
@ -193,10 +194,11 @@ SetLayoutAxis(Axis2D axis)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
BeginBuild()
|
BeginBuild(Inputs* inputs)
|
||||||
{
|
{
|
||||||
UIContext* ctx = GetCtx();
|
UIContext* ctx = GetCtx();
|
||||||
|
|
||||||
|
ctx.inputs = inputs;
|
||||||
ctx.buffer.count = 0;
|
ctx.buffer.count = 0;
|
||||||
|
|
||||||
ctx.root = Root();
|
ctx.root = Root();
|
||||||
@ -247,26 +249,16 @@ CalcPercentageSizes(UIItem* item)
|
|||||||
{
|
{
|
||||||
if (!Nil(item))
|
if (!Nil(item))
|
||||||
{
|
{
|
||||||
CalcPercentageSizes(item.first);
|
|
||||||
CalcPercentageSizes(item.next);
|
|
||||||
|
|
||||||
static foreach(axis; A2D.min .. A2D.max)
|
static foreach(axis; A2D.min .. A2D.max)
|
||||||
{
|
{
|
||||||
if (item.size_info[axis].type == ST.Percentage)
|
if (item.size_info[axis].type == ST.Percentage)
|
||||||
{
|
{
|
||||||
UIItem* parent;
|
item.size.v[axis] = item.parent.size.v[axis] * item.size_info[axis].value;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CalcPercentageSizes(item.first);
|
||||||
|
CalcPercentageSizes(item.next);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user