When you press the "Mark all pages as visited" button in the Watchlist, it marks the pages as visited based on the time at which the button was pressed.
Instead, the watchlist should have a hidden parameter which is the timestamp when the watchlist was shown to the users, and that parameter should be passed when the button is pressed.
I see pages A and B as unread, take 20 min to review page B, in the mean time page C is also edited by another user. I go back to the tab where my Watchlist is shown and press the button. It should mark A and B as read, but show C as unread. Currently, it will also show C is read (because it marks them as read based on the time when I pressed the button, not when the form was originally sent to me).