X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsemi-tie.cc;h=0d31a2e07388b82e1ad0627b57f10d124e8bd5d9;hb=28d3a736534f3aa3cd403485770a019bd35114c4;hp=1cc82c3b08839a397198010384524114d801345d;hpb=0694f44d61203d9e8d26cd9bc83b46f2addb2c7f;p=lilypond.git diff --git a/lily/semi-tie.cc b/lily/semi-tie.cc index 1cc82c3b08..0d31a2e073 100644 --- a/lily/semi-tie.cc +++ b/lily/semi-tie.cc @@ -55,20 +55,22 @@ MAKE_SCHEME_CALLBACK (Semi_tie, calc_control_points, 1) SCM Semi_tie::calc_control_points (SCM smob) { - Grob *me = unsmob (smob); + Item *me = LY_ASSERT_SMOB(Item, smob, 1); + (void) me->get_property ("direction"); - if (Semi_tie_column::has_interface (me->get_parent (Y_AXIS))) - { - me->get_parent (Y_AXIS)->get_property ("positioning-done"); - } - else + Grob *yparent = me->get_parent (Y_AXIS); + if (has_interface (yparent)) { - programming_error ("lv tie without Semi_tie_column. Killing lv tie."); - me->suicide (); + /* trigger positioning. */ + yparent->get_property ("positioning-done"); + + return me->get_property_data ("control-points"); } - return me->get_property_data ("control-points"); + programming_error ("lv tie without Semi_tie_column. Killing lv tie."); + me->suicide (); + return SCM_EOL; } int @@ -84,10 +86,23 @@ Semi_tie::get_position (Item *me) } bool -Semi_tie::less (Grob *const &s1, - Grob *const &s2) +Semi_tie::less (Grob *g1, Grob *g2) { - return Tie::get_position_generic (s1) < Tie::get_position_generic (s2); + Item *i1 = dynamic_cast (g1); + if (!i1) + { + g1->programming_error ("grob is not a semi-tie"); + return false; + } + + Item *i2 = dynamic_cast (g2); + if (!i2) + { + g2->programming_error ("grob is not a semi-tie"); + return true; + } + + return get_position (i1) < get_position (i2); } Item * @@ -95,10 +110,3 @@ Semi_tie::head (Item *me) { return unsmob (me->get_object ("note-head")); } - -Item * -Semi_tie::head (Item *me, Direction d) -{ - SCM head_dir = me->get_property ("head-direction"); - return (is_direction (head_dir) && (to_dir (head_dir) == d)) ? head (me) : 0; -}