X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flineararrangement.cpp;h=5294252a11b5f38ffec445c24880e0d4009f69eb;hb=d2491d05fe17541a01bd7f3264e693fad616f2d9;hp=fb2e71c180dac87aa81c41ec3fce0d6c80b06a4b;hpb=cc966845eb995805e22d63600d8670328c4feae3;p=libs%2Fgltk.git diff --git a/source/lineararrangement.cpp b/source/lineararrangement.cpp index fb2e71c..5294252 100644 --- a/source/lineararrangement.cpp +++ b/source/lineararrangement.cpp @@ -11,9 +11,18 @@ LinearArrangement::LinearArrangement(Layout &l, Side p): split_here(false), gravity(opposite), internal_aligned(false), + uniform(false), + uniform_ref(0), next_spacing(-1) { } +void LinearArrangement::set_uniform(bool u) +{ + uniform = u; + if(!uniform) + uniform_ref = 0; +} + void LinearArrangement::split() { if(gravity==primary) @@ -60,6 +69,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 +102,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 +120,10 @@ void LinearArrangement::Loader::split() obj.split(); } +void LinearArrangement::Loader::uniform(bool u) +{ + obj.set_uniform(u); +} + } // namespace GLtk } // namespace Msp