Performance: Full virtualization of the mosaic view #3436
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This updates the pseudo-virtualization of the mosaic view with a real virtualization.
This increases scroll-performance yet again (less blinking, faster loading), while decreasing memory usage.
The effect should be especially noticeable when scrolling through a lot of images on a small screen.
The virtualization is implemented by measuring the size of the first Element using a ResizeObserver and assuming, that all other elements have the same size and no spacing inbetween.
This has not yet been tested on iOS devices yet.
There is a known bug on Firefox, that the number of columns is off by 1 on certain resolutions. I highly suspect that that is because of the non-integer widths of the columns on most screen-sizes. Because the position-calculations are simple JS, it's probably the size reported by the ResizeObserver. Will fix that laterFixed it
There is a known bug where often when opening a photo, and using the left/right arrows to switch between images, the wrong images are shown. This is strange, because the viewer opening logic isn't touched in this PR. Will try to find the cause and fix it soon.Fixed it
Performance comparison
Scrolling through 1400 images on a smartphone-sized screen
before
after
Acceptance Criteria: