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 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 (*i); if (t) { f (t); } + i = tmp; } } template 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 (*i); if (t) { f (t); } + i = tmp; } } template 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 (*i); if (t) { f (t); } + i = tmp; } } template 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 (*i); if (t) { f (t); } + i = tmp; } }