X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsemi-tie.cc;h=2d0c1133a879f9e769900c014c8ba1c62c7e7bcc;hb=90e4d7057f3857da049dfda3d130017d4719bd6b;hp=193008751433dcaf3f7a5f7d6827a0bec6e88669;hpb=832fcf965e4b64aa55ae5dbbf6b0d78e0f686dac;p=lilypond.git diff --git a/lily/semi-tie.cc b/lily/semi-tie.cc index 1930087514..2d0c1133a8 100644 --- a/lily/semi-tie.cc +++ b/lily/semi-tie.cc @@ -49,26 +49,29 @@ ADD_INTERFACE (Semi_tie, "head-direction " "note-head " "thickness " + "line-thickness " ); 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 @@ -87,13 +90,20 @@ bool Semi_tie::less (Grob *g1, Grob *g2) { Item *i1 = dynamic_cast (g1); + if (!i1) + { + g1->programming_error ("grob is not a semi-tie"); + return false; + } + Item *i2 = dynamic_cast (g2); - if (i1 && i2) { - return get_position (i1) < get_position (i2); - } + if (!i2) + { + g2->programming_error ("grob is not a semi-tie"); + return true; + } - programming_error ("grob is not a semi-tie"); - return false; + return get_position (i1) < get_position (i2); } Item * @@ -101,10 +111,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; -}