From 4b7640b12c3838e09fb1452ddfb837b3b21a0ac3 Mon Sep 17 00:00:00 2001
From: hanwen <hanwen>
Date: Wed, 1 Mar 2006 20:08:35 +0000
Subject: [PATCH] * lily/volta-bracket.cc (modify_edge_height): change from
 after_line_breaking_callback. Suicide last bracket if appropriate.

* scripts/midi2ly.py: optparse, strip lilylib copy.
---
 ChangeLog                     |  3 +++
 VERSION                       |  2 +-
 lily/include/volta-bracket.hh |  2 +-
 lily/volta-bracket.cc         | 18 ++++++++++--------
 scm/define-grobs.scm          |  1 -
 5 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e3defa773f..66afb60fca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-03-01  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+	* lily/volta-bracket.cc (modify_edge_height): change from
+	after_line_breaking_callback. Suicide last bracket if appropriate.
+ 
 	* python/lilylib.py: strip getopt support
 
 	* scripts/etf2ly.py (do_options): use optparse
diff --git a/VERSION b/VERSION
index a01de27d66..8c2457bbf0 100644
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=7
-PATCH_LEVEL=36
+PATCH_LEVEL=37
 MY_PATCH_LEVEL=
 
diff --git a/lily/include/volta-bracket.hh b/lily/include/volta-bracket.hh
index 156a8c5a6e..f9999b92f6 100644
--- a/lily/include/volta-bracket.hh
+++ b/lily/include/volta-bracket.hh
@@ -14,7 +14,7 @@ class Volta_bracket_interface
 public:
   static bool has_interface (Grob *);
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
+  static void modify_edge_height (Spanner *);
   static void add_column (Grob *, Grob *col);
   static void add_bar (Grob *me, Item *bar);
 };
diff --git a/lily/volta-bracket.cc b/lily/volta-bracket.cc
index 03137d1b12..d601e476e6 100644
--- a/lily/volta-bracket.cc
+++ b/lily/volta-bracket.cc
@@ -63,6 +63,10 @@ Volta_bracket_interface::print (SCM smob)
       */
     }
 
+  modify_edge_height (me);
+  if (!me->is_live ())
+    return SCM_EOL;
+  
   Drul_array<Real> edge_height = robust_scm2interval (me->get_property ("edge-height"),
 						      Interval (1.0, 1.0));
   Drul_array<Real> flare = robust_scm2interval (me->get_property ("bracket-flare"),
@@ -101,17 +105,13 @@ Volta_bracket_interface::print (SCM smob)
 }
 
 
-MAKE_SCHEME_CALLBACK(Volta_bracket_interface,after_line_breaking, 1);
-SCM
-Volta_bracket_interface::after_line_breaking (SCM smob)
+void
+Volta_bracket_interface::modify_edge_height (Spanner *me)
 {
-  Spanner *me = unsmob_spanner (smob);
   Spanner *orig_span = dynamic_cast<Spanner *> (me->original ());
  
   bool broken_first_bracket = orig_span && (orig_span->broken_intos_[0] == (Spanner *)me);
-
   bool broken_last_bracket = orig_span && (orig_span->broken_intos_.back () == (Spanner *)me);
-
   bool no_vertical_start = orig_span && !broken_first_bracket;
   bool no_vertical_end = orig_span && !broken_last_bracket;
 
@@ -144,8 +144,10 @@ Volta_bracket_interface::after_line_breaking (SCM smob)
 
       me->set_property ("edge-height", ly_interval2scm (edge_height));
     }
-  
-  return SCM_UNSPECIFIED;
+
+  if (broken_last_bracket && no_vertical_end && no_vertical_start
+      && !broken_first_bracket)
+    me->suicide ();
 }
 
 void
diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm
index 077e06982e..9a4f2c86ca 100644
--- a/scm/define-grobs.scm
+++ b/scm/define-grobs.scm
@@ -1822,7 +1822,6 @@
     (VoltaBracket
      . (
 	(stencil . ,ly:volta-bracket-interface::print)
-	(after-line-breaking . ,ly:volta-bracket-interface::after-line-breaking)
 	(direction . ,UP)
 	(padding . 1)
 	(font-encoding . fetaNumber)
-- 
2.39.5