I think I didn't describe what scroll correction actualy does and thus there might be some confussion about it.
So I need to add some terms that will help explaining it:
Container RenderArea - red rectangle on picture
ScrollOffset - this is distance (measured in pixels) between left/top edge of container renderarea and left/top edge of first item in container (length of green arrow on picture)
When we change selection in containers that initiate scrolling, container tries to correct ScrollOffset so selected item stays visible for the user - so this happens only when You press key (it won't try to correct ScrollOffset during scrolling if You're not holding key)
---
Presentation of different scroll correction methods using slightly changed view in confluence:
- DEFAULT - http://www.youtube.com/watch?v=cyLEVLk25k8
this is what is used in dharma/master now - scrolling is done on limited distance
- AGGRESIVE - http://www.youtube.com/watch?v=iehTooQ6U-Y
we only ensure that focused item is kept in container RenderArea - in video focused item is aligned to right border of container when holding key
- LOOSE- http://www.youtube.com/watch?v=Q1JtcQ3pGqM
we only ensure that previously focused item is kept in container RenderArea subtracted by size of single item on both ends (it's marked by blue lines on picture) - so if we are scrolling by holding up/down/left/right - it will keep selected item in RenderArea (same as aggresive), but if we use page up/down / scroll to top/bottom - it won't correct scroll offset presenting some nice effect
- DISABLED - http://www.youtube.com/watch?v=PbDHTU6Ev7s
as tittle say - we don't do any scroll correction - selected item can go out of RenderArea
PS. Yes I can see that weird things going on screen - this is dirty region related and I will need to check that later