GSoC 2020: Albums, Week 6, Weather conditions optimal
Improvements and roadblocks
Welcome to this week's progress blogpost. It was an exciting week that marked the end of my exams period (which means that progress will accelerate) and was full of improvements and bug fixes for MuseScore's Albums.
This week I focused on polishing the album-mode editing experience and on improving the codebase.
- Decoupled the album Score instances from the Score instances used by the ScoreVIew. This allows the Album to work without opening all its scores in tabs.
- Fixed an important bug where the user was unable to add notes via the mouse (caused by the introduction of the front cover code).
- Fixed (correctly) a bug where zooming would not always repaint the ScoreView.
- Improved behavior for opening/closing the temporary album score and for changing between modes of operation.
- Fixed compiler warnings.
- Introduced smart pointers.
- Changed various pointers to references.
- Improved 'Contents' indexing.
- Fixed a bunch of crashes.
- Added the ability to add page breaks to the end of each score in the album.
For today's blog post, I wanted to record a video to show you the state of the project. Unfortunately, I was unable to fix a pretty big issue. When adding notes (while in album-mode) the view is moved away from the place of entry and to the place where the measure would be if its score was not part of an album. In other words, the position used for adjusting the view is not its true position (the one in the album) but its position in individual score. This happens because in the album mode the system of the measure of the place of entry is on a different page than the one in the individual score.
Fortunately, I am (probably) very close to fixing this. What I am trying to do is add a second parent (for the system class) and switch between them appropriately (that way it should not mess with Kartikay's project). When I get it done I'll upload a second blog post with the video.
Well, I'll fix that bug and then I'll continue adding small features and fixing bugs (more on that in the next blog post).