The \change command no longer refuses to change the parent of a
context when the context itself would be of the proper type to
change to. This allows changing the parent of a context that
could be nested, like StaffGroup in StaffGroup or NullVoice
in Staff (since NullVoice is also aliased to Staff).
}
else if (it.get_outlet ()->is_alias (to_type))
{
- // No enclosing context was found because the iterator's immediate
- // context is the kind that was sought.
- /* We could change the current translator's id, but that would make
- errors hard to catch.
+ // No enclosing context of the right kind was found
+ // and the iterator's immediate context is the kind that was sought.
- last->translator_id_string () = get_change
- ()->change_to_id_string (); */
result = _f ("not changing to same context type: %s", ly_symbol2string (to_type).c_str ());
}
else
Context *
find_context_above_by_parent_type (Context *where, SCM parent_type)
{
- for (Context *child = 0; where;
- child = where, where = where->get_parent_context ())
- if (where->is_alias (parent_type))
- return child;
-
+ while (Context *parent = where->get_parent_context ())
+ {
+ if (parent->is_alias (parent_type))
+ return where;
+ where = parent;
+ }
return 0;
}