]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/layout.h
Smarter way of complementing constraint types
[libs/gltk.git] / source / layout.h
index 230365182e1d84a881bc363a48487234215fd3a7..43d1ca875c2d01d9e9a60e9e22e554808b43d673 100644 (file)
@@ -57,8 +57,10 @@ private:
                VERTICAL = 1,
                SELF_POS = 2,
                SELF_DIM = 4,
+               SELF_MASK = 6,
                TARGET_POS = 8,
                TARGET_DIM = 16,
+               TARGET_MASK = 24,
                SPACING = 32
        };
 
@@ -100,7 +102,7 @@ protected:
        struct Slot: public sigc::trackable
        {
                Layout &layout;
-               unsigned index;
+               int index;
                Widget &widget;
                Geometry autosize_geom;
                Geometry geom;
@@ -112,6 +114,7 @@ protected:
                virtual ~Slot() { }
 
                void autosize_changed();
+               void visibility_changed(bool);
        };
 
        enum SolveMode
@@ -125,6 +128,7 @@ protected:
 
        Container *container;
        std::list<Slot *> slots;
+       unsigned n_active_slots;
        Sides margin;
        unsigned row_spacing;
        unsigned col_spacing;
@@ -138,14 +142,23 @@ public:
 
        void set_container(Container &);
        void set_margin(const Sides &);
+
+       /** Sets the default spacing between widgets in bothg directions. */
        void set_spacing(unsigned);
+
+       /** Sets the default vertical spacing between widgets.  Affects the ABOVE
+       and BELOW constraints. */
        void set_row_spacing(unsigned);
+
+       /** Sets the default horizontal spacing between widgets.  Affects the
+       LEFT_OF and RIGHT_OF constraints. */
        void set_column_spacing(unsigned);
 
        void add_widget(Widget &);
        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);