X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flayout.h;h=cbd763e9e5337dc7a6395d7d0b3a860c6d9ad7e1;hb=3d84860cb25cf05ed36ee6cbd07d9e58cee52422;hp=379b468bf3f46efe30b37de4165081f8731e8d83;hpb=2b70e8801c43875ed3f4135bdd0141265cff0312;p=libs%2Fgltk.git diff --git a/source/layout.h b/source/layout.h index 379b468..cbd763e 100644 --- a/source/layout.h +++ b/source/layout.h @@ -20,11 +20,11 @@ is then solved to obtain positions and dimensions that fulfill the constraints. There are three kinds of constraints available: ordering, alignment and dimension matching. -Ordering constraints specify that the widgets should be placed next to other -along X or Y axis. These operate on one axis at a time, so a widget could be -"right of" another even if they are separated by hundreds of pixels vertically. -The widgets will be separated by a spacing value, which is settable on a per- -layout basis. +Ordering constraints specify that the widgets should be placed next to each +other along X or Y axis. These operate on one axis at a time, so a widget +could be "right of" another even if they are separated by hundreds of pixels +vertically. The widgets will be separated by a spacing value, which is +settable on a per-layout basis. Alignment constraints make the corresponding edges of two widgets be on the same line. These are incompatible with ordering constraints, so only one or @@ -45,8 +45,8 @@ dependent widgets have the expand flag set, the results are currently undefined. Since specifiyng constraints manually can be quite tedious, there are some -derived Layout classes that implement common positioning patterns. See -MixedRows and Grid. +derived Layout classes that implement common positioning patterns. See Row, +Column, MixedRows and Grid. */ class Layout { @@ -101,6 +101,7 @@ protected: Layout &layout; unsigned index; Widget &widget; + Geometry autosize_geom; Geometry geom; std::list constraints; Packing horiz_pack; @@ -112,6 +113,12 @@ protected: void autosize_changed(); }; + enum SolveMode + { + UPDATE, + AUTOSIZE + }; + class LinearProgram; struct Pointers; @@ -120,6 +127,7 @@ protected: Sides margin; unsigned row_spacing; unsigned col_spacing; + Geometry autosize_geom; static Pointers pointers[2]; @@ -145,11 +153,10 @@ public: void set_expand(Widget &, bool, bool); void update(); + void autosize(); protected: - void find_constraint_group(Slot &, ConstraintType, std::set &); - void sort_slots(std::list &, ConstraintType); - void solve_constraints(int); + void solve_constraints(int, SolveMode); }; } // namespace GLtk