protect use of iterators across routeUI selection when operations change the selection (e.g. deletion)
This commit is contained in:
parent
890ea91920
commit
1f695014b4
@ -46,41 +46,54 @@ public:
|
|||||||
|
|
||||||
template <typename Function>
|
template <typename Function>
|
||||||
void foreach_route_ui (Function f) {
|
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);
|
RouteUI* t = dynamic_cast<RouteUI*> (*i);
|
||||||
if (t) {
|
if (t) {
|
||||||
f (t);
|
f (t);
|
||||||
}
|
}
|
||||||
|
i = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Function>
|
template <typename Function>
|
||||||
void foreach_route_time_axis (Function f) {
|
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);
|
RouteTimeAxisView* t = dynamic_cast<RouteTimeAxisView*> (*i);
|
||||||
if (t) {
|
if (t) {
|
||||||
f (t);
|
f (t);
|
||||||
}
|
}
|
||||||
|
i = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Function>
|
template <typename Function>
|
||||||
void foreach_audio_time_axis (Function f) {
|
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);
|
AudioTimeAxisView* t = dynamic_cast<AudioTimeAxisView*> (*i);
|
||||||
if (t) {
|
if (t) {
|
||||||
f (t);
|
f (t);
|
||||||
}
|
}
|
||||||
|
i = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Function>
|
template <typename Function>
|
||||||
void foreach_midi_time_axis (Function f) {
|
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);
|
MidiTimeAxisView* t = dynamic_cast<MidiTimeAxisView*> (*i);
|
||||||
if (t) {
|
if (t) {
|
||||||
f (t);
|
f (t);
|
||||||
}
|
}
|
||||||
|
i = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user