]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/layout.h
Add centering constraints to Layout
[libs/gltk.git] / source / layout.h
index a8ea3bf25b7f819492d14eb34c30a24380ba1f76..a13a0934a5761a962ca4eddd553d48c76476872f 100644 (file)
@@ -63,8 +63,9 @@ private:
                TARGET_POS = 8,
                TARGET_DIM = 16,
                TARGET_MASK = 24,
-               SPACING = 32,
-               SLACK = 64
+               HALF_DIM = 32,
+               SPACING = 64,
+               SLACK = 128
        };
 
 public:
@@ -79,8 +80,10 @@ public:
                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_VCENTER = VERTICAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM|HALF_DIM,
                ALIGN_BOTTOM = VERTICAL|SELF_POS|TARGET_POS,
                ALIGN_RIGHT = HORIZONTAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM,
+               ALIGN_HCENTER = HORIZONTAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM|HALF_DIM,
                ALIGN_LEFT = HORIZONTAL|SELF_POS|TARGET_POS,
                COPY_WIDTH = HORIZONTAL|SELF_DIM|TARGET_DIM,
                COPY_HEIGHT = VERTICAL|SELF_DIM|TARGET_DIM
@@ -153,6 +156,7 @@ private:
                Packing horiz_pack;
                Packing vert_pack;
                bool ghost;
+               bool floating;
 
                Slot(Layout &, Widget &);
 
@@ -172,7 +176,7 @@ private:
        Container *container;
        std::list<Slot *> slots;
        unsigned n_active_slots;
-       unsigned n_slack_constraints[2];
+       unsigned n_slack_vars[2];
        Sides margin;
        unsigned row_spacing;
        unsigned col_spacing;
@@ -187,8 +191,9 @@ public:
 
        void set_container(Container &);
        void set_margin(const Sides &);
+       const Sides &get_margin() const { return margin; }
 
-       /** Sets the default spacing between widgets in bothg directions. */
+       /** Sets the default spacing between widgets in both directions. */
        void set_spacing(unsigned);
 
        /** Sets the default vertical spacing between widgets.  Affects the ABOVE
@@ -199,6 +204,9 @@ public:
        LEFT_OF and RIGHT_OF constraints. */
        void set_column_spacing(unsigned);
 
+       unsigned get_row_spacing() const { return row_spacing; }
+       unsigned get_column_spacing() const { return col_spacing; }
+
        void push_arrangement(Arrangement &);
        Arrangement *get_arrangement() const;
        void pop_arrangement(Arrangement &);
@@ -225,8 +233,10 @@ public:
        /// Sets a widget as a ghost, taking up space even if it is hidden.
        void set_ghost(Widget &, bool);
 
+       void set_floating(Widget &, bool);
+
        void update();
-       void autosize();
+       void autosize(Geometry &);
 
 private:
        void solve_constraints(int, SolveMode);