X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flayout.h;h=230365182e1d84a881bc363a48487234215fd3a7;hb=5e97c5c224c30e68c26fddd2153694088f932bee;hp=582bc1b0f685297b053ca73e38044aef592d777b;hpb=39cf4c8d917dc60c087fb4af6885bfa78f6fba34;p=libs%2Fgltk.git diff --git a/source/layout.h b/source/layout.h index 582bc1b..2303651 100644 --- a/source/layout.h +++ b/source/layout.h @@ -84,6 +84,7 @@ protected: { ConstraintType type; Slot ⌖ + int spacing; Constraint(ConstraintType, Slot &); }; @@ -101,6 +102,7 @@ protected: Layout &layout; unsigned index; Widget &widget; + Geometry autosize_geom; Geometry geom; std::list constraints; Packing horiz_pack; @@ -112,6 +114,12 @@ protected: void autosize_changed(); }; + enum SolveMode + { + UPDATE, + AUTOSIZE + }; + class LinearProgram; struct Pointers; @@ -120,6 +128,7 @@ protected: Sides margin; unsigned row_spacing; unsigned col_spacing; + Geometry autosize_geom; static Pointers pointers[2]; @@ -139,15 +148,24 @@ protected: virtual Slot *create_slot(Widget &); Slot &get_slot_for_widget(Widget &); static ConstraintType complement(ConstraintType); + void create_constraint(Widget &, ConstraintType, Widget &, int); + public: - void add_constraint(Widget &, ConstraintType, Widget &); + /** Adds a constraint between two widgets. */ + void add_constraint(Widget &src, ConstraintType type, Widget &tgt); + + /** Adds a constraint between two widgets, overriding the default spacing. + Not all constraint types use a spacing. */ + void add_constraint(Widget &src, ConstraintType type, Widget &tgt, unsigned); + void set_gravity(Widget &, int, int); void set_expand(Widget &, bool, bool); void update(); + void autosize(); protected: - void solve_constraints(int); + void solve_constraints(int, SolveMode); }; } // namespace GLtk