Quellcode durchsuchen

merge osmd-public/develop: fix subtitle sometimes not displayed/read correctly

https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/issues/1456
sschmidTU vor 1 Jahr
Ursprung
Commit
8ab3965f35
1 geänderte Dateien mit 18 neuen und 10 gelöschten Zeilen
  1. 18 10
      src/MusicalScore/ScoreIO/MusicSheetReader.ts

+ 18 - 10
src/MusicalScore/ScoreIO/MusicSheetReader.ts

@@ -513,7 +513,7 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
         this.readTitle(root);
         this.readCopyright(root);
         try {
-            if (!this.musicSheet.Title || !this.musicSheet.Composer) {
+            if (!this.musicSheet.Title || !this.musicSheet.Composer || !this.musicSheet.Subtitle) {
                 this.readTitleAndComposerFromCredits(root); // this can also throw an error
             }
         } catch (ex) {
@@ -628,20 +628,28 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
                                     } else {
                                         possibleTitle = creditChild.value;
                                     }
+                                } else {
+                                    if (finalSubtitle) {
+                                        finalSubtitle += "\n" + creditChild.value;
+                                    } else {
+                                        finalSubtitle = creditChild.value;
+                                    }
                                 }
                             }
                         }
-                        if (!(this.musicSheet.Composer !== undefined && this.musicSheet.Lyricist)) {
-                            switch (creditJustify) {
-                                case "right":
+                        switch (creditJustify) {
+                            case "right":
+                                if (!this.musicSheet.Composer) {
                                     this.musicSheet.Composer = new Label(this.trimString(creditChild.value));
-                                    break;
-                                case "left":
+                                }
+                                break;
+                            case "left":
+                                if (!this.musicSheet.Lyricist) {
                                     this.musicSheet.Lyricist = new Label(this.trimString(creditChild.value));
-                                    break;
-                                default:
-                                    break;
-                            }
+                                }
+                                break;
+                            default:
+                                break;
                         }
                     }
                 }