There are times when "smart scrolling" fails to recognize that what is being displayed is a double page manga being read page by page, and no matter how much you tweak with the settings (invert smart scroll, double page, single page, disable smart scroll, etc.), it fails to deliver the desired result. I'd absolutely LOVE to be able to force certain scrolling behaviour settings for when it just doesn't work. In my case, all I want is a very simple:
What happens with smart scroll with certain double-page manga is that it starts scrolling horizontally, instead of vertically, and very small amounts of pixels with each boundary reset, so even when you enable "invert smart scroll", it just doesn't work as it's supposed to.
This is by far my favourite manga reader. This is perhaps the only issue I've had with it. In the attachments, I added 2 sample files to reproduce what I'm talking about.
Small correction (no idea how to edit the main post, so I'll just post it here) and clarification:
Thank you for your request. I know exactly what you mean because this bugs me as well sometimes. (I think it is, technically, a bug.) Read on if you want to enjoy me thinking aloud.
I think the solution is actually a composition of solutions to two distinct issues.
First, when in double page mode, we need to automatically transpose the smart scrolling axes for wide images. This is basically the same as pressing X but works on top of that and should happen automatically. This should be easy because wide images are already presented as a single image even in double mode, thus, we already know exactly the condition when this should be applied.
Assuming that this is fixed, let us now consider the main issue here. W.l.o.g., we assume both double page mode and manga mode to be enabled and no rotation being applied. Thus, we semantically look at two pages with portrait orientation, the first one to the right and the second one to the left. Whether this is due to the application combining two images or one wide image already combined in a single image should not matter in this scenario.
If everything fits onto the screen, no scrolling is necessary and we assume the user to read everything at once. If both scrollbars are already necessary for other reasons, the application already takes care of it. (This is already the case for two side-by-side images, and it will be the case as well as soon as said automatic transposition is implemented.) Thus, the issue becomes apparent whenever the viewport can be scrolled vertically but not horizontally.
I think the best way to handle this is to add an artificial one pixel wide gap to the outer side of the second page (i.e. to the left of the left page in manga mode). This way, the main area ends up larger than the viewport so a horizontal scrollbar will appear. Then, the smart scrolling feature can work as usual, that is, moving down the (semantic) page to the right and then move on to the left (because we now can and need to move horizontally).
If, without that gap, the double page just fits into the viewport horizontally (either it just happens to be the case or the user enforces this by using "Fit to width mode"), the artificial gap will appear as soon as we move to the left, and the rightmost pixel column of the right page will disappear. Thus, the "fit to width" semantics, if applicable, are kept at least when we arrive at a new double page. If there already is a gap because the (semantic) double page is not at least as wide as the viewport, adding the artificial gap should work as well, but it should be done such that horizontal scrolling becomes necessary.
A very similar issue arises when in double page mode and looking at two images side-by-side. The same artifical gap can be used here as well because it ensures that, when starting reading a new double page in manga mode, we are closer to the right page than to the left so the smart scrolling feature can tell which page we are on.
Feel free to comment.
FYI, I have a local version that works most of the time. However, it is still noticeably buggy as it does not work with transformations applied and starts off at the wrong position sometimes. I am trying to fix that but [bugs:#123] is certainly not helping here.
Related
Bugs: #123