- int prev_acc = (prev == SCM_BOOL_F) ? 0 : gh_scm2int (gh_cdr (prev));
- bool different = prev_acc != a;
-
- bool tie_changes = tied_l_arr_.find_l (support_l) && different;
- if (!forget
- && (note_l->forceacc_b_ || different)
- && !tie_changes)
+ SCM prev_acc = (prev == SCM_BOOL_F) ? gh_int2scm (0) : gh_cdr (prev);
+ bool different = !gh_equal_p (prev_acc , gh_int2scm (a));
+ int p = gh_number_p (prev_acc) ? gh_scm2int (prev_acc) : 0;
+
+ Grob *tie_break_reminder = 0;
+ bool tie_changes = false;
+ for (int i=0; i < tie_l_arr_.size (); i++)
+ if (support_l == Tie::head (tie_l_arr_[i], RIGHT))
+ {
+ tie_changes = different;
+ /* Enable accidentals for broken tie
+
+ We only want an accidental on a broken tie,
+ if the tie changes the accidental.
+
+ Maybe check property noTieBreakForceAccidental? */
+ if (different)
+ tie_break_reminder = tie_l_arr_[i];
+ break;
+ }
+
+ /* When do we want accidentals:
+
+ 1. when property force-accidental is set, and not
+ tie_changes
+ 2. when different and not tie-changes
+ 3. maybe when at end of a tie: we must later see if
+ we're after a line break */
+ if (( (to_boolean (note_l->get_mus_property ("force-accidental"))
+ || different)
+ && !tie_changes)
+ || tie_break_reminder)