I made this change and it's working very well with Firefox. Clicking on the scrollbar arrows will cause the grid to always scroll by 1 row and not 0 or 1. Clicking inside the scrollbar, for page scrolling, also works as well. This was tested with Firefox 3.6. Will look at IE 6 next.
The modification to onLiveScroll is in green below.
Code:
onLiveScroll : function()
{
var scrollTop = this.liveScroller.dom.scrollTop;
var cursor = Math.floor((scrollTop)/this.rowHeight);
if (Ext.isGecko) {
var delta = (scrollTop) % this.rowHeight;
if (delta !== 0) {
if (scrollTop > this.lastScrollPos) {
this.adjustScrollerPos(this.rowHeight - delta, true);
} else {
this.adjustScrollerPos(-(delta), true);
}
}
}
this.rowIndex = cursor;
// the lastRowIndex will be set when refreshing the view has finished
if (cursor == this.lastRowIndex) {
return;
}
this.updateLiveRows(cursor);
this.lastScrollPos = this.liveScroller.dom.scrollTop;
},
I'm hoping I can do something similar for IE and Safari.