]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/layout.h
Add constraint types that allow flexible spacing between widgets
[libs/gltk.git] / source / layout.h
index 7ae3907c772d740f0ad1ab3e28386f5bc0042213..2bddb77cfa30bef43632036b8e2564e41e59a06e 100644 (file)
@@ -57,9 +57,12 @@ private:
                VERTICAL = 1,
                SELF_POS = 2,
                SELF_DIM = 4,
+               SELF_MASK = 6,
                TARGET_POS = 8,
                TARGET_DIM = 16,
-               SPACING = 32
+               TARGET_MASK = 24,
+               SPACING = 32,
+               SLACK = 64
        };
 
 public:
@@ -69,6 +72,10 @@ public:
                BELOW = VERTICAL|SELF_POS|SELF_DIM|TARGET_POS|SPACING,
                RIGHT_OF = HORIZONTAL|SELF_POS|TARGET_POS|TARGET_DIM|SPACING,
                LEFT_OF = HORIZONTAL|SELF_POS|SELF_DIM|TARGET_POS|SPACING,
+               FAR_ABOVE = VERTICAL|SELF_POS|TARGET_POS|TARGET_DIM|SPACING|SLACK,
+               FAR_BELOW = VERTICAL|SELF_POS|SELF_DIM|TARGET_POS|SPACING|SLACK,
+               FAR_RIGHT_OF = HORIZONTAL|SELF_POS|TARGET_POS|TARGET_DIM|SPACING|SLACK,
+               FAR_LEFT_OF = HORIZONTAL|SELF_POS|SELF_DIM|TARGET_POS|SPACING|SLACK,
                ALIGN_TOP = VERTICAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM,
                ALIGN_BOTTOM = VERTICAL|SELF_POS|TARGET_POS,
                ALIGN_RIGHT = HORIZONTAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM,
@@ -127,6 +134,7 @@ protected:
        Container *container;
        std::list<Slot *> slots;
        unsigned n_active_slots;
+       unsigned n_slack_constraints[2];
        Sides margin;
        unsigned row_spacing;
        unsigned col_spacing;
@@ -140,8 +148,16 @@ 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 &);