From 0cafb00c0023523503bc57644ac334eda127eaad Mon Sep 17 00:00:00 2001
From: Joe Neeman <joeneeman@gmail.com>
Date: Sat, 26 Jun 2010 12:00:29 +0300
Subject: [PATCH] Fix 1152.

Ensure that the voice-based positioning of a rest is used for
horizontal spacing, even if there is a Rest_collision involved.
---
 input/regression/spacing-accidental-rest.ly | 8 ++++++++
 scm/define-grobs.scm                        | 6 ++++++
 2 files changed, 14 insertions(+)
 create mode 100644 input/regression/spacing-accidental-rest.ly

diff --git a/input/regression/spacing-accidental-rest.ly b/input/regression/spacing-accidental-rest.ly
new file mode 100644
index 0000000000..aec60b94f5
--- /dev/null
+++ b/input/regression/spacing-accidental-rest.ly
@@ -0,0 +1,8 @@
+\version "2.13.25"
+
+\header {
+  texidoc = "Accidentals don't collide with shifted-down rests."
+}
+
+\new Staff << g'4 \\ {r8 aeses} >>
+
diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm
index 778c0cfdc1..a76dd31655 100644
--- a/scm/define-grobs.scm
+++ b/scm/define-grobs.scm
@@ -2388,6 +2388,11 @@
 	  (else
 	   '(0 . 0)))))
 
+;; Sometimes, a pure callback will be chained to a non-pure callback via
+;; chain_offset_callback, in which case this provides a default by simply
+;; passing through the value from the pure callback.
+(define (pure-chain-offset-callback grob start end prev-offset) prev-offset)
+
 (define pure-conversions-alist
   `(
     (,ly:accidental-interface::height . ,ly:accidental-interface::pure-height)
@@ -2395,6 +2400,7 @@
     (,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height)
     (,ly:grob::stencil-height . ,pure-stencil-height)
     (,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height)
+    (,ly:rest-collision::force-shift-callback-rest . ,pure-chain-offset-callback)
     (,ly:rest::height . ,ly:rest::pure-height)
     (,ly:self-alignment-interface::y-aligned-on-self . ,ly:self-alignment-interface::pure-y-aligned-on-self)
     (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)
-- 
2.39.5