In a nutshell, scroll up/down now cooperate such that _progressive_scroll is incremented and decremented as needed.
PerformScrollUp is reworked to expect the value of progressive_scroll always from the ScrollDown Point of View. This allows PerformScrollUp to drop the !progressive_scroll corner case altogether.
Only caveat is this adds a side-effect whereby apps with _any_ background windows will tend to push all other windows to the background when scrolled. I went back and tested against vanilla 14.04.20140303 and the same behavior is already present in scroll down but not scroll up. Now they both agree on this behavioral quirk. Overall it could be seen as consistent with the unity approach of clicking a launcher brings only 1 window to the foreground, not all of them.
In a nutshell, scroll up/down now cooperate such that _progressive_scroll is incremented and decremented as needed.
PerformScrollUp is reworked to expect the value of progressive_scroll always from the ScrollDown Point of View. This allows PerformScrollUp to drop the !progressive_scroll corner case altogether.
Only caveat is this adds a side-effect whereby apps with _any_ background windows will tend to push all other windows to the background when scrolled. I went back and tested against vanilla 14.04.20140303 and the same behavior is already present in scroll down but not scroll up. Now they both agree on this behavioral quirk. Overall it could be seen as consistent with the unity approach of clicking a launcher brings only 1 window to the foreground, not all of them.