]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/layout.h
The entire row should be divided when initially making a column basic
[libs/gltk.git] / source / layout.h
index 582bc1b0f685297b053ca73e38044aef592d777b..230365182e1d84a881bc363a48487234215fd3a7 100644 (file)
@@ -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<Constraint> 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