diff options
-rw-r--r-- | gtk2_ardour/track_selection.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/gtk2_ardour/track_selection.h b/gtk2_ardour/track_selection.h index d94ec3c8c1..2e9927ab42 100644 --- a/gtk2_ardour/track_selection.h +++ b/gtk2_ardour/track_selection.h @@ -46,41 +46,54 @@ public: template <typename Function> void foreach_route_ui (Function f) { - for (iterator i = begin(); i != end(); ++i) { + for (iterator i = begin(); i != end(); ) { + iterator tmp = i; + ++tmp; + RouteUI* t = dynamic_cast<RouteUI*> (*i); if (t) { f (t); } + i = tmp; } } template <typename Function> void foreach_route_time_axis (Function f) { - for (iterator i = begin(); i != end(); ++i) { + for (iterator i = begin(); i != end(); ) { + iterator tmp = i; + ++tmp; RouteTimeAxisView* t = dynamic_cast<RouteTimeAxisView*> (*i); if (t) { f (t); } + i = tmp; } } template <typename Function> void foreach_audio_time_axis (Function f) { - for (iterator i = begin(); i != end(); ++i) { + for (iterator i = begin(); i != end(); ) { + iterator tmp = i; + ++tmp; AudioTimeAxisView* t = dynamic_cast<AudioTimeAxisView*> (*i); if (t) { f (t); } + i = tmp; } } template <typename Function> void foreach_midi_time_axis (Function f) { - for (iterator i = begin(); i != end(); ++i) { + for (iterator i = begin(); i != end(); ) { + iterator tmp = i; + ++tmp; MidiTimeAxisView* t = dynamic_cast<MidiTimeAxisView*> (*i); if (t) { f (t); } + i = tmp; } } |