X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Farrangement.h;h=4a651bac864a189cbb8c2942e35390939c2bff38;hb=6d9570c97584758e3cfcac6827d439b7fb844cf4;hp=f323a9b232da37389f4285de968380fe427f8e54;hpb=fef09a8d2fe38dcc8fd3beff3e132f945a4d4c8a;p=libs%2Fgltk.git diff --git a/source/arrangement.h b/source/arrangement.h index f323a9b..4a651ba 100644 --- a/source/arrangement.h +++ b/source/arrangement.h @@ -3,21 +3,22 @@ #include #include +#include #include "layout.h" +#include "mspgltk_api.h" namespace Msp { namespace GLtk { class Widget; -class arrangement_error: public std::logic_error +class MSPGLTK_API arrangement_error: public std::logic_error { public: arrangement_error(const std::string &w): std::logic_error(w) { } - virtual ~arrangement_error() throw() { } }; -class Arrangement +class MSPGLTK_API Arrangement: public NonCopyable { protected: enum Side @@ -31,9 +32,7 @@ protected: struct Edge { std::list widgets; - bool aligned; - - Edge(); + bool aligned = false; bool empty() { return widgets.empty(); } void clear(); @@ -42,7 +41,7 @@ protected: }; Layout &layout; - Arrangement *parent; + Arrangement *parent = nullptr; Edge edges[4]; Arrangement(Layout &); @@ -57,8 +56,8 @@ protected: virtual void finish_widget(Widget &) = 0; virtual void finish_slot() = 0; const Edge &get_edge(Side s) const { return edges[s]; } - void add_constraint(Widget &, Layout::ConstraintType, Side); - void add_constraint(Widget &, Layout::ConstraintType, const Edge &); + void add_constraint(Widget &, Layout::ConstraintType, Side, int = -1); + void add_constraint(Widget &, Layout::ConstraintType, const Edge &, int = -1); static Layout::ConstraintType get_order_constraint(Side, bool); static Layout::ConstraintType get_align_constraint(Side);