if (Item *item = dynamic_cast<Item *>(at_bat))
{
+ /*
+ We use this to weed out grobs that fall at the end
+ of the line when we want grobs at the beginning.
+ */
+ end_of_line_visible = item->break_status_dir () == LEFT;
+
if (!Item::break_visible (item))
continue;
// safeguard to bring down the column rank so that end of line footnotes show up on the correct line
continue;
if (!at_bat->is_live ())
continue;
+ /*
+ TODO
+ Sometimes, there are duplicate entries in the all_elements_
+ list. In a separate patch, this practice should be squashed
+ so that the check below can be eliminated.
+ */
+ if (find (out.begin (), out.end (), at_bat) != out.end ())
+ continue;
out.push_back (at_bat);
}
if (Item *it = dynamic_cast<Item *> (elts[i]))
{
- Direction d = LEFT;
- do
+ for (LEFT_and_RIGHT (d))
{
Item *piece = it->find_prebroken_piece (d);
if (piece && to_boolean (scm_apply_1 (pure_relevant_p, piece->self_scm (), SCM_EOL)))
relevant_grobs.push_back (piece);
}
- while (flip (&d) != LEFT);
}
}
}