Om Malik discovered that Microsoft has received a new and exciting patent on "page up and page down." It was issued on 8/19/08. I just read the summary and this is truly a ridiculous patent. The USPTO must have gotten confused by the fancy math included in the patent (e.g. "{[(p-1)/c]h}+r") that is included in claim 1.
1. In a computing environment, a method comprising: displaying at least one page of a document that has multiple pages, at least one of the multiple pages, and the displayed at least one page including a first page displayed beginning at a starting point offset from a top of the document and from a top of the first page; calculating a height of at least the first page; calculating a row offset of the starting point of the first page; calculating a vertical offset at the starting point of the first page, wherein the vertical offset is calculated according to a formula of the form {[(p-1)/c]h}+r, where p is equal to the number of pages in the document, c is equal to the number of columns of the document which are simultaneously displayed, h is equal to the height of at least the first page, and r is equal to the row offset of the starting point of the first page; receiving a command indicative of a whole page-based incremental scroll request related to changing first content currently being displayed in the at least one page; determining a whole-page increment for scrolling from first content to second content, wherein determining the whole-page increment includes calculating a vertical offset at a second starting point in the document, the vertical offset being calculated according to the formula V.sub.1.+-.(cr), where V.sub.1 is the vertical offset at the starting point of the first page; and changing the display to display second content, by replacing the at least one page of the document with at least one other page, the display of the at least one other page beginning at the second starting point.
I think this used to be exercise #4 on problem set #3 in 6.001 at MIT. You used to have to write this in Scheme, which I’m guessing is a lot more elegant than the Microsoft C# implementation.