]> git.donarmstrong.com Git - lilypond.git/commitdiff
Table Of Contents crash with negative first-page-number
authorThomas Morley <thomasmorley65@gmail.com>
Sun, 12 Jul 2015 16:18:02 +0000 (18:18 +0200)
committerDan Eble <nine.fierce.ballads@gmail.com>
Tue, 21 Jul 2015 18:09:09 +0000 (14:09 -0400)
Issue 4494

Let \with-link point to the physical page-number

scm/define-markup-commands.scm

index 5a08facce20b7d8c040c43722028b010cfa82b35..d7c0f22e469c0a6093288a4eaa8a58395b1eabc6 100644 (file)
@@ -529,18 +529,24 @@ only works in the PDF backend.
          (x-ext (ly:stencil-extent arg-stencil X))
          (y-ext (ly:stencil-extent arg-stencil Y)))
     (ly:stencil-add
-     (ly:make-stencil
-      `(delay-stencil-evaluation
-        ,(delay (let* ((table (ly:output-def-lookup layout 'label-page-table))
-                       (page-number (if (list? table)
-                                        (assoc-get label table)
-                                        #f)))
-                  (list 'page-link page-number
-                        `(quote ,x-ext) `(quote ,y-ext)))))
-      x-ext
-      y-ext)
-     arg-stencil)))
-
+      (ly:make-stencil
+       `(delay-stencil-evaluation
+         ,(delay (let* ((table (ly:output-def-lookup layout 'label-page-table))
+                        (table-page-number
+                          (if (list? table)
+                              (assoc-get label table)
+                              #f))
+                        (first-page-number
+                          (ly:output-def-lookup layout 'first-page-number))
+                        (current-page-number
+                          (if table-page-number
+                              (1+ (- table-page-number first-page-number))
+                              #f)))
+                 (list 'page-link current-page-number
+                       `(quote ,x-ext) `(quote ,y-ext)))))
+       x-ext
+       y-ext)
+      arg-stencil)))
 
 (define-markup-command (beam layout props width slope thickness)
   (number? number? number?)