]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/arrangement.cpp
Convert loops and iterators to use C++11 features
[libs/gltk.git] / source / arrangement.cpp
index 581e6b405ccf9da2bbeea1f94401ab04bb185c01..838a488ea9fdfccebef388b22241bb5771542dbc 100644 (file)
@@ -31,21 +31,27 @@ void Arrangement::arrange(Arrangement &arr)
        {
                Side side = static_cast<Side>(i);
                const Edge &edge = arr.get_edge(side);
-               for(list<Widget *>::const_iterator j=edge.widgets.begin(); j!=edge.widgets.end(); ++j)
-                       process_widget(**j, side, edge.aligned);
+               for(Widget *w: edge.widgets)
+                       process_widget(*w, side, edge.aligned);
        }
        finish_slot();
 }
 
-void Arrangement::add_constraint(Widget &wdg, Layout::ConstraintType type, Side side)
+void Arrangement::add_constraint(Widget &wdg, Layout::ConstraintType type, Side side, int spacing)
 {
-       add_constraint(wdg, type, edges[side]);
+       add_constraint(wdg, type, edges[side], spacing);
 }
 
-void Arrangement::add_constraint(Widget &wdg, Layout::ConstraintType type, const Edge &edge)
+void Arrangement::add_constraint(Widget &wdg, Layout::ConstraintType type, const Edge &edge, int spacing)
 {
-       for(list<Widget *>::const_iterator i=edge.widgets.begin(); i!=edge.widgets.end(); ++i)
-               layout.add_constraint(wdg, type, **i);
+       for(Widget *w: edge.widgets)
+               if(w!=&wdg)
+               {
+                       if(spacing<0)
+                               layout.add_constraint(wdg, type, *w);
+                       else
+                               layout.add_constraint(wdg, type, *w, spacing);
+               }
 }
 
 Layout::ConstraintType Arrangement::get_order_constraint(Side s, bool slack)
@@ -95,5 +101,17 @@ void Arrangement::Edge::add(Widget &wdg, bool algn)
        aligned = algn;
 }
 
+void Arrangement::Edge::align()
+{
+       if(aligned || widgets.empty())
+               return;
+
+       auto second = widgets.begin();
+       ++second;
+
+       widgets.erase(second, widgets.end());
+       aligned = true;
+}
+
 } // namespace GLtk
 } // namespace Msp