X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flineararrangement.cpp;h=269b68e34f71fe9933b668695d51b0eaa5806662;hb=81c4024fb6acf37df702a803dc4efdf82a81525a;hp=fb2e71c180dac87aa81c41ec3fce0d6c80b06a4b;hpb=d85d9bd7dae120e3e7ebaf64e7b78a975fab94a6;p=libs%2Fgltk.git diff --git a/source/lineararrangement.cpp b/source/lineararrangement.cpp index fb2e71c..269b68e 100644 --- a/source/lineararrangement.cpp +++ b/source/lineararrangement.cpp @@ -5,15 +5,16 @@ namespace GLtk { LinearArrangement::LinearArrangement(Layout &l, Side p): Arrangement(l), - primary(p), - opposite(static_cast((primary+2)%4)), - first(true), - split_here(false), - gravity(opposite), - internal_aligned(false), - next_spacing(-1) + primary(p) { } +void LinearArrangement::set_uniform(bool u) +{ + uniform = u; + if(!uniform) + uniform_ref = nullptr; +} + void LinearArrangement::split() { if(gravity==primary) @@ -60,6 +61,20 @@ void LinearArrangement::process_widget(Widget &wdg, Side side, bool aligned) } } +void LinearArrangement::finish_widget(Widget &wdg) +{ + if(uniform) + { + if(!uniform_ref) + uniform_ref = &wdg; + else + { + Layout::ConstraintType ct = ((primary==LEFT || primary==RIGHT) ? Layout::COPY_WIDTH : Layout::COPY_HEIGHT); + layout.add_constraint(wdg, ct, *uniform_ref); + } + } +} + void LinearArrangement::finish_slot() { internal_aligned = next.aligned; @@ -79,6 +94,7 @@ LinearArrangement::Loader::Loader(LinearArrangement &c): add("expand", &Loader::expand); add("spacing", &Loader::spacing); add("split", &Loader::split); + add("uniform", &Loader::uniform); } void LinearArrangement::Loader::expand() @@ -96,5 +112,10 @@ void LinearArrangement::Loader::split() obj.split(); } +void LinearArrangement::Loader::uniform(bool u) +{ + obj.set_uniform(u); +} + } // namespace GLtk } // namespace Msp