/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2000--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2000--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
SCM short_text_;
vector<Grob *> axis_groups_;
+ vector<Grob *> backup_axis_groups_;
virtual void finalize ();
DECLARE_ACKNOWLEDGER (axis_group);
{
text_spanner_ = make_spanner ("InstrumentName", SCM_EOL);
- Grob *col = unsmob_grob (get_property ("currentCommandColumn"));
+ Grob *col = Grob::unsmob (get_property ("currentCommandColumn"));
text_spanner_->set_bound (LEFT, col);
text_spanner_->set_property ("text", short_text_);
text_spanner_->set_property ("long-text", long_text_);
/*
UGH, should handle this in Score_engraver.
*/
- Grob *system = unsmob_grob (get_property ("rootSystem"));
+ Grob *system = Grob::unsmob (get_property ("rootSystem"));
if (system)
Axis_group_interface::add_element (system, text_spanner_);
else
{
if (dynamic_cast<Spanner *> (info.grob ())
&& Axis_group_interface::has_axis (info.grob (), Y_AXIS)
- && Page_layout_problem::is_spaceable (info.grob ())
/* ugh. */
&& !info.grob ()->internal_has_interface (ly_symbol2scm ("volta-interface"))
&& (!Align_interface::has_interface (info.grob ())))
{
- axis_groups_.push_back (info.grob ());
+ if (Page_layout_problem::is_spaceable (info.grob ()))
+ axis_groups_.push_back (info.grob ());
+ else
+ // By default, don't include non-spaceable staves in the
+ // support of an instrument name. However, if the only staves
+ // are non-spaceable, we'll fall back to using them.
+ backup_axis_groups_.push_back (info.grob ());
}
}
void
Instrument_name_engraver::stop_spanner ()
{
+ if (axis_groups_.empty ())
+ axis_groups_ = backup_axis_groups_;
+
for (vsize i = 0; i < axis_groups_.size (); i++)
Pointer_group_interface::add_grob (text_spanner_,
ly_symbol2scm ("elements"),
axis_groups_[i]);
text_spanner_->set_bound (RIGHT,
- unsmob_grob (get_property ("currentCommandColumn")));
+ Grob::unsmob (get_property ("currentCommandColumn")));
Pointer_group_interface::set_ordered (text_spanner_,
ly_symbol2scm ("elements"),