- if (llast && !Paper_column::breakable_b (last))
- {
- Item *llcol = llast->column_l ();
- int llrank = Paper_column::rank_i (llcol);
- bool llmus= Paper_column::musical_b (llcol);
- if (llrank - lrank == 1
- && lrank - rank == 1
- && llmus && !lmus && mus)
- {
- /*
- these columns are adjacent, so set spacing-sequence in
- IT.
-
- Q Q+1 Q+2 (rank)
- Note Clef Note
-
- IT LAST LLAST
-
- */
- SCM seq = col->get_grob_property ("spacing-sequence");
- col->set_grob_property ("spacing-sequence",
- gh_cons (gh_cons (it->self_scm (), last->self_scm ()), seq));
-
- /*
- lcol can not be a loose column, so we make sure
- that is and will not be marked as such.
- */
- lcol->set_grob_property ("between-cols" , SCM_BOOL_F);
- }
- else if (!lmus)
- {
- SCM between = lcol->get_grob_property ("between-cols");
-
- if (between == SCM_BOOL_F)
- continue;
-
- if (!gh_pair_p (between))
- {
- between = gh_cons (it->self_scm (), llast->self_scm ());
- lcol ->set_grob_property ("between-cols", between);
- }
-
- Item * left
- = dynamic_cast<Item*> (unsmob_grob (ly_car (between)));
- if(Paper_column::rank_i (left->column_l ()) < rank)
- gh_set_car_x (between, col->self_scm());
-
- Item * right
- = dynamic_cast<Item*> (unsmob_grob (ly_cdr (between)));
- if (Paper_column::rank_i (right->column_l ()) > llrank )
- gh_set_cdr_x (between, llcol->self_scm ());
- }
- }
- }