+/*
+ This is all too hairy. We use bounded-by-me to make sure that some
+ columns are kept "alive". Unfortunately, when spanners are suicided,
+ this falls apart again. (sigh.)
+
+ THIS IS BROKEN KLUDGE. WE SHOULD INVENT SOMETHING BETTER.
+*/
+MAKE_SCHEME_CALLBACK (Paper_column, before_line_breaking, 1);
+SCM
+Paper_column::before_line_breaking (SCM grob)
+{
+ Grob *me = unsmob_grob (grob);
+
+ SCM c = me->get_property ("bounded-by-me");
+ SCM *ptrptr = &c;
+
+ while (scm_is_pair (*ptrptr))
+ {
+ Grob *g = unsmob_grob (scm_car (*ptrptr));
+
+ if (!g || !g->is_live ())
+ {
+ *ptrptr = scm_cdr (*ptrptr);
+ }
+ else
+ {
+ ptrptr = SCM_CDRLOC (*ptrptr);
+ }
+ }
+
+ me->set_property ("bounded-by-me", c);
+ return SCM_UNSPECIFIED;
+}