]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/layout.cpp
Allow setting sensor ID for multiple tracks at once
[r2c2.git] / source / libmarklin / layout.cpp
index 470d573e871179cd90bc9a7ddacb8a83591f231b..4835f2e89bd70a7b7062710998777eb5188cea30 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of the MSP Märklin suite
-Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
+Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa
 Distributed under the GPL
 */
 
@@ -47,8 +47,21 @@ void Layout::check_links()
        for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
                (*i)->break_links();
 
+       set<Track *> flext;
        for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
-               for(set<Track *>::iterator j=i; j!=tracks.end(); ++j)
+       {
+               if((*i)->get_flex())
+                       flext.insert(*i);
+               else
+               {
+                       for(set<Track *>::iterator j=i; j!=tracks.end(); ++j)
+                               if(j!=i)
+                                       (*i)->snap_to(**j, true);
+               }
+       }
+
+       for(set<Track *>::iterator i=flext.begin(); i!=flext.end(); ++i)
+               for(set<Track *>::iterator j=tracks.begin(); j!=tracks.end(); ++j)
                        if(j!=i)
                                (*i)->snap_to(**j, true);
 }