- sep_span_p_ = new Spanner (get_property ("SeparatingGroupSpanner"));
- Separating_group_spanner::set_interface (sep_span_p_);
- announce_grob (sep_span_p_, 0);
- sep_span_p_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
+ Item *it = i.item ();
+
+ if (Note_spacing::has_interface (it))
+ {
+ current_spacings_.note_spacings_.push_back (it);
+ return;
+ }
+
+ if (Item::is_non_musical (it)
+ && !current_spacings_.staff_spacing_
+ && to_boolean (get_property ("createSpacing")))
+ {
+ Grob *col = unsmob_grob (get_property ("currentCommandColumn"));
+
+ current_spacings_.staff_spacing_ = make_item ("StaffSpacing", SCM_EOL);
+ context ()->set_property ("hasStaffSpacing", SCM_BOOL_T);
+
+ Pointer_group_interface::add_grob (current_spacings_.staff_spacing_,
+ ly_symbol2scm ("left-items"),
+ col);
+
+ if (!last_spacings_.note_spacings_.size ()
+ && last_spacings_.staff_spacing_)
+ {
+ SCM ri = last_spacings_.staff_spacing_->get_object ("right-items");
+ Grob_array *ga = unsmob_grob_array (ri);
+ if (!ga)
+ {
+ SCM ga_scm = Grob_array::make_array ();
+ last_spacings_.staff_spacing_->set_object ("right-items", ga_scm);
+ ga = unsmob_grob_array (ga_scm);
+ }
+
+ ga->clear ();
+ ga->add (col);
+ }
+ }