X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Flineararrangement.cpp;h=fb2e71c180dac87aa81c41ec3fce0d6c80b06a4b;hb=aa939035cbb1bc2b89f77255953b2927690e4cca;hp=5d18cfb309423bae9a99553264d9031f5ad965e5;hpb=fcccd3471fd3defdc5c10ca5ed096a56015c2467;p=libs%2Fgltk.git diff --git a/source/lineararrangement.cpp b/source/lineararrangement.cpp index 5d18cfb..fb2e71c 100644 --- a/source/lineararrangement.cpp +++ b/source/lineararrangement.cpp @@ -9,7 +9,9 @@ LinearArrangement::LinearArrangement(Layout &l, Side p): opposite(static_cast((primary+2)%4)), first(true), split_here(false), - gravity(opposite) + gravity(opposite), + internal_aligned(false), + next_spacing(-1) { } void LinearArrangement::split() @@ -29,17 +31,22 @@ void LinearArrangement::expand() throw arrangement_error("no widgets"); add_constraint(*edges[primary].widgets.front(), get_align_constraint(primary), primary); - layout.set_expand(*edges[primary].widgets.front(), false, true); + layout.set_expand(*edges[primary].widgets.front(), (primary==LEFT || primary==RIGHT), (primary==TOP || primary==BOTTOM)); edges[primary].align(); gravity = primary; } +void LinearArrangement::spacing(unsigned s) +{ + next_spacing = s; +} + void LinearArrangement::process_widget(Widget &wdg, Side side, bool aligned) { if(side==opposite) { bool snug = (internal_aligned && aligned && !split_here); - add_constraint(wdg, get_order_constraint(primary, !snug), primary); + add_constraint(wdg, get_order_constraint(primary, !snug), primary, next_spacing); if(first) edges[side].add(wdg, (aligned && gravity==opposite)); } @@ -62,6 +69,7 @@ void LinearArrangement::finish_slot() next.clear(); split_here = false; first = false; + next_spacing = -1; } @@ -69,6 +77,7 @@ LinearArrangement::Loader::Loader(LinearArrangement &c): DataFile::ObjectLoader(c) { add("expand", &Loader::expand); + add("spacing", &Loader::spacing); add("split", &Loader::split); } @@ -77,6 +86,11 @@ void LinearArrangement::Loader::expand() obj.expand(); } +void LinearArrangement::Loader::spacing(unsigned s) +{ + obj.spacing(s); +} + void LinearArrangement::Loader::split() { obj.split();