NS_IMETHODIMP nsListBoxBodyFrame::ScrollByLines(PRInt32 aNumLines) { PRInt32 scrollIndex, visibleRows; GetIndexOfFirstVisibleRow(&scrollIndex); GetNumberOfVisibleRows(&visibleRows); scrollIndex += aNumLines; if (scrollIndex < 0) scrollIndex = 0; else { PRInt32 numRows = GetRowCount(); PRInt32 lastPageTopRow = numRows - visibleRows; if (scrollIndex > lastPageTopRow) scrollIndex = lastPageTopRow; } ScrollToIndex(scrollIndex); // we have to do a sync update for mac because if we scroll too quickly // w/out going back to the main event loop we can easily scroll the wrong // bits and it looks like garbage (bug 63465). // XXXbz is this seriously still needed? // I'd use Composite here, but it doesn't always work. // vm->Composite(); PresContext()->GetViewManager()->ForceUpdate(); return NS_OK; }
nsresult nsListBoxBodyFrame::ScrollByLines(PRInt32 aNumLines) { PRInt32 scrollIndex, visibleRows; GetIndexOfFirstVisibleRow(&scrollIndex); GetNumberOfVisibleRows(&visibleRows); scrollIndex += aNumLines; if (scrollIndex < 0) scrollIndex = 0; else { PRInt32 numRows = GetRowCount(); PRInt32 lastPageTopRow = numRows - visibleRows; if (scrollIndex > lastPageTopRow) scrollIndex = lastPageTopRow; } ScrollToIndex(scrollIndex); return NS_OK; }