X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftrackattachment.cpp;h=29521fdc064659457d3dfaa97da30d3fc0b79563;hb=110a865e1a175f304ecaaa7a31b6985cf0c12a99;hp=bed7db86c79ba47b3cd25b1ec82871eb83bb64c8;hpb=895fdb9568cda40898e5bb646061c14a41dc0124;p=r2c2.git diff --git a/source/libr2c2/trackattachment.cpp b/source/libr2c2/trackattachment.cpp index bed7db8..29521fd 100644 --- a/source/libr2c2/trackattachment.cpp +++ b/source/libr2c2/trackattachment.cpp @@ -10,7 +10,9 @@ namespace R2C2 { TrackAttachment::TrackAttachment(Layout &l): Object(l), offset(0) -{ } +{ + layout.signal_object_removed.connect(sigc::mem_fun(this, &TrackAttachment::object_removed)); +} TrackAttachment::~TrackAttachment() { @@ -79,7 +81,7 @@ float TrackAttachment::find_offset(const TrackIter &trk, const Vector &point) Vector epp = trk->get_snap_node(trk.entry()).position; float dist = distance(epp, point); - float offs = dist; + float offs = min(dist, trk->get_type().get_path_length(0)); while(1) { TrackPoint tp = trk->get_point(trk.entry(), offs); @@ -92,4 +94,10 @@ float TrackAttachment::find_offset(const TrackIter &trk, const Vector &point) return offs; } +void TrackAttachment::object_removed(Object &o) +{ + if(&o==track.track()) + track = TrackIter(); +} + } // namespace R2C"