- if (last_note_spacing_)
- last_note_spacing_->set_grob_property ("right-item",
- break_malt_p_->self_scm ());
+ if (to_boolean (get_property ("createSpacing"))
+ && p_ref_ == break_item_)
+ {
+ Item *it = make_item ("StaffSpacing", SCM_EOL);
+ current_spacings_.staff_spacing_ = it;
+ Pointer_group_interface::add_grob (it, ly_symbol2scm ("left-items"),
+ break_item_);
+
+ if (int i = last_spacings_.note_spacings_.size ())
+ {
+ for (; i--;)
+ Pointer_group_interface::add_grob (last_spacings_.note_spacings_[i],
+ ly_symbol2scm ("right-items"),
+ break_item_);
+ }
+ else if (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 (break_item_);
+ }