X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspaceable-grob.cc;h=4dd224ce7fb11f90cd7c83993c0e01f66327c5ff;hb=b087ea53eddbea8cd2ee8b96a46e2d49c3d422c6;hp=638a4fa83bbc258654386729e4c3b87778de7bfc;hpb=9589d04a2647157e73c188f55cd4094b7e6dcc26;p=lilypond.git diff --git a/lily/spaceable-grob.cc b/lily/spaceable-grob.cc index 638a4fa83b..4dd224ce7f 100644 --- a/lily/spaceable-grob.cc +++ b/lily/spaceable-grob.cc @@ -1,9 +1,20 @@ /* - spaceable-grob.cc -- implement Spaceable_grob + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2000--2010 Han-Wen Nienhuys - (c) 2000--2007 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "spaceable-grob.hh" @@ -59,8 +70,8 @@ void Spaceable_grob::add_spring (Grob *me, Grob *other, Spring sp) { SCM ideal = me->get_object ("ideal-distances"); - sp.other_ = other; - ideal = scm_cons (sp.smobbed_copy (), ideal); + + ideal = scm_cons (scm_cons (sp.smobbed_copy (), other->self_scm ()), ideal); me->set_object ("ideal-distances", ideal); } @@ -73,10 +84,10 @@ Spaceable_grob::get_spring (Grob *this_col, Grob *next_col) !spring && scm_is_pair (s); s = scm_cdr (s)) { - Spring *sp = unsmob_spring (scm_car (s)); - - if (sp && sp->other_ == next_col) - spring = sp; + if (scm_is_pair (scm_car (s)) + && unsmob_grob (scm_cdar (s)) == next_col + && unsmob_spring (scm_caar (s))) + spring = unsmob_spring (scm_caar (s)); } if (!spring) @@ -89,18 +100,16 @@ Spaceable_grob::get_spring (Grob *this_col, Grob *next_col) ADD_INTERFACE (Spaceable_grob, - "A layout object that takes part in the spacing problem. ", - + "A layout object that takes part in the spacing problem.", /* properties */ "allow-loose-spacing " "ideal-distances " "keep-inside-line " - "left-neighbors " + "left-neighbor " "measure-length " "minimum-distances " - "right-neighbors " + "right-neighbor " "spacing-wishes " - );