]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/align-element.cc
release: 1.1.48
[lilypond.git] / lily / align-element.cc
index 56011a3fe1b94198cf30a1ef56b7a124d9eaaa51..a92f7502b3946908aa7743a01d6a84094607001a 100644 (file)
@@ -94,18 +94,28 @@ Align_element::do_side_processing ()
       Interval y = elem_l_arr_[i]->extent(axis ());
       if (!y.empty_b())
        {
-         dims.push (y);
+
          Score_element *e =dynamic_cast<Score_element*>(elem_l_arr_[i]);
 
-         SCM extra_dims = e->get_elt_property (extra_space_scm_sym);
+         // todo: fucks up if item both in Halign & Valign. 
+         SCM min_dims = e->remove_elt_property (minimum_space_scm_sym);
+         if (min_dims != SCM_BOOL_F)
+           {
+             min_dims = SCM_CDR (min_dims);
+             y.unite (Interval (gh_scm2double (SCM_CAR (min_dims)),
+                                gh_scm2double (SCM_CDR (min_dims))));
+           }
+         
+         SCM extra_dims = e->remove_elt_property (extra_space_scm_sym);
          if (extra_dims != SCM_BOOL_F)
            {
              extra_dims = SCM_CDR (extra_dims);
-             dims.top ()[LEFT] -= gh_scm2double (SCM_CAR (extra_dims));
-             dims.top ()[RIGHT] += gh_scm2double (SCM_CDR (extra_dims));
+             y[LEFT] += gh_scm2double (SCM_CAR (extra_dims));
+             y[RIGHT] += gh_scm2double (SCM_CDR (extra_dims));
            }
 
          elems.push (e);
+         dims.push (y);          
        }
     }