- p_ref_ = new Item
- (get_property ("basicSeparationItemProperties"));
-
- if (ib)
- p_ref_->set_elt_property ("breakable", SCM_BOOL_T);
- announce_element (Score_element_info (p_ref_, 0));
+ p_ref_->set_property ("non-musical", SCM_BOOL_T);
+ context ()->set_property ("breakableSeparationItem", p_ref_->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_);
+ }