Submitted by Alexander Klimov
Often a book is continuously read in several places simultaneously, for example, one reads the main body and the commentary; or several chapters with problems and their solutions; or several kids read the same book on the same device with different pace.
The current system of static bookmarks does not support this use-case adequately, because every time the user scrolls in one locus he has to set a new bookmark and delete the previous one.
It would be nice to add a Boolean flag to each bookmark (whether it is static or rolling) and add to the current state a pointer to CRB (current rolling bookmark), can be null. Each time the user does a non-local jump, if the pointer is not null, CRB is updated to point to the place in the book where the user was before the jump. If the jump destination is a rolling bookmark, then the pointer is updated to point to it, otherwise the pointer is set to be null.
Supposed you read a book with endnotes. You set bookmark B (body) to page 1 and bookmark E (endnotes) to page 100 and flag them both as rolling. You jump to bookmark B (this makes it CRB) and scroll while reading, say, to page 3. Now you jump to E. This updates B to point to page 3 and makes E the CRB. You scroll to page 102 and jump to B (page 3), this set E to point to page 102 and makes B the CRB.