X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flayout.h;h=7ae3907c772d740f0ad1ab3e28386f5bc0042213;hb=a6733b168083926ccc11eb3896642348b13817a2;hp=7d53470624cf7c7d925ef247fd7f96692babc175;hpb=6549eff66171d53be91ea7ba3f23339812ef6cad;p=libs%2Fgltk.git diff --git a/source/layout.h b/source/layout.h index 7d53470..7ae3907 100644 --- a/source/layout.h +++ b/source/layout.h @@ -84,6 +84,7 @@ protected: { ConstraintType type; Slot ⌖ + int spacing; Constraint(ConstraintType, Slot &); }; @@ -99,8 +100,9 @@ protected: struct Slot: public sigc::trackable { Layout &layout; - unsigned index; + int index; Widget &widget; + Geometry autosize_geom; Geometry geom; std::list constraints; Packing horiz_pack; @@ -110,6 +112,13 @@ protected: virtual ~Slot() { } void autosize_changed(); + void visibility_changed(bool); + }; + + enum SolveMode + { + UPDATE, + AUTOSIZE }; class LinearProgram; @@ -117,9 +126,11 @@ protected: Container *container; std::list slots; + unsigned n_active_slots; Sides margin; unsigned row_spacing; unsigned col_spacing; + Geometry autosize_geom; static Pointers pointers[2]; @@ -137,19 +148,27 @@ public: void remove_widget(Widget &); protected: virtual Slot *create_slot(Widget &); + void update_slot_indices(); 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 find_constraint_group(Slot &, ConstraintType, std::set &); - void sort_slots(std::list &, ConstraintType); - void solve_constraints(int); + void solve_constraints(int, SolveMode); }; } // namespace GLtk