]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/arrangement.cpp
Minor style fixes
[libs/gltk.git] / source / arrangement.cpp
index ec890efb7e08d55f8802c0c20f434e7a4e9bdfba..9982691e4cb0a81a3fdedb6c891739ce1a198701 100644 (file)
@@ -45,7 +45,32 @@ void Arrangement::add_constraint(Widget &wdg, Layout::ConstraintType type, Side
 void Arrangement::add_constraint(Widget &wdg, Layout::ConstraintType type, const Edge &edge)
 {
        for(list<Widget *>::const_iterator i=edge.widgets.begin(); i!=edge.widgets.end(); ++i)
-               layout.add_constraint(wdg, type, **i);
+               if(*i!=&wdg)
+                       layout.add_constraint(wdg, type, **i);
+}
+
+Layout::ConstraintType Arrangement::get_order_constraint(Side s, bool slack)
+{
+       switch(s)
+       {
+       case TOP:    return (slack ? Layout::FAR_ABOVE : Layout::ABOVE);
+       case RIGHT:  return (slack ? Layout::FAR_RIGHT_OF : Layout::RIGHT_OF);
+       case BOTTOM: return (slack ? Layout::FAR_BELOW : Layout::BELOW);
+       case LEFT:   return (slack ? Layout::FAR_LEFT_OF : Layout::LEFT_OF);
+       default: throw invalid_argument("Arrangement::get_align_constraint");
+       }
+}
+
+Layout::ConstraintType Arrangement::get_align_constraint(Side s)
+{
+       switch(s)
+       {
+       case TOP:    return Layout::ALIGN_TOP;
+       case RIGHT:  return Layout::ALIGN_RIGHT;
+       case BOTTOM: return Layout::ALIGN_BOTTOM;
+       case LEFT:   return Layout::ALIGN_LEFT;
+       default: throw invalid_argument("Arrangement::get_align_constraint");
+       }
 }
 
 
@@ -71,5 +96,17 @@ void Arrangement::Edge::add(Widget &wdg, bool algn)
        aligned = algn;
 }
 
+void Arrangement::Edge::align()
+{
+       if(aligned || widgets.empty())
+               return;
+
+       list<Widget *>::iterator second = widgets.begin();
+       ++second;
+
+       widgets.erase(second, widgets.end());
+       aligned = true;
+}
+
 } // namespace GLtk
 } // namespace Msp