Bug 606672 - Fennec scrolling code is too expensive. part1, part2. [r=mfinkle]

--HG--
extra : rebase_source : b7f80e3e0ac699b1593954aff57e9ca262c6eb61
This commit is contained in:
Oleg Romashin 2010-11-18 16:47:16 +02:00
Родитель 82495b20b5
Коммит 32113c01eb
2 изменённых файлов: 13 добавлений и 12 удалений

Просмотреть файл

@ -82,9 +82,10 @@ let Elements = {};
["tabs", "tabs-container"], ["tabs", "tabs-container"],
["controls", "browser-controls"], ["controls", "browser-controls"],
["panelUI", "panel-container"], ["panelUI", "panel-container"],
["viewBuffer", "view-buffer"],
["toolbarContainer", "toolbar-container"], ["toolbarContainer", "toolbar-container"],
["browsers", "browsers"] ["browsers", "browsers"],
["contentViewport", "content-viewport"],
["contentNavigator", "content-navigator"]
].forEach(function (aElementGlobal) { ].forEach(function (aElementGlobal) {
let [name, id] = aElementGlobal; let [name, id] = aElementGlobal;
XPCOMUtils.defineLazyGetter(Elements, name, function() { XPCOMUtils.defineLazyGetter(Elements, name, function() {

Просмотреть файл

@ -218,9 +218,9 @@ var Browser = {
}, },
getPosition: function(aScrollX, aScrollY) { getPosition: function(aScrollX, aScrollY) {
let { x: x, y: y } = getBrowser().getPosition(); let scroll = getBrowser().getPosition();
aScrollX.value = x; aScrollX.value = scroll.x;
aScrollY.value = y; aScrollY.value = scroll.y;
} }
}; };
@ -772,8 +772,8 @@ var Browser = {
tab.lastSelected = Date.now(); tab.lastSelected = Date.now();
if (tab.pageScrollOffset) { if (tab.pageScrollOffset) {
let { x: pageScrollX, y: pageScrollY } = tab.pageScrollOffset; let pageScroll = tab.pageScrollOffset;
Browser.pageScrollboxScroller.scrollTo(pageScrollX, pageScrollY); Browser.pageScrollboxScroller.scrollTo(pageScroll.x, pageScroll.y);
} }
}, },
@ -1166,8 +1166,8 @@ Browser.MainDragger.prototype = {
if (doffset.x > 0 && rect.left > 0) if (doffset.x > 0 && rect.left > 0)
x = Math.min(doffset.x, rect.left); x = Math.min(doffset.x, rect.left);
let height = document.getElementById("content-viewport").getBoundingClientRect().height; let height = Elements.contentViewport.getBoundingClientRect().height;
height -= document.getElementById("content-navigator").getBoundingClientRect().height; height -= Elements.contentNavigator.getBoundingClientRect().height;
rect = Rect.fromRect(Browser.contentScrollbox.getBoundingClientRect()).map(Math.round); rect = Rect.fromRect(Browser.contentScrollbox.getBoundingClientRect()).map(Math.round);
if (doffset.y < 0 && rect.bottom < height) if (doffset.y < 0 && rect.bottom < height)
y = Math.max(doffset.y, rect.bottom - height); y = Math.max(doffset.y, rect.bottom - height);
@ -1180,10 +1180,10 @@ Browser.MainDragger.prototype = {
/** Pan scroller by the given amount. Updates doffset with leftovers. */ /** Pan scroller by the given amount. Updates doffset with leftovers. */
_panScroller: function _panScroller(scroller, doffset) { _panScroller: function _panScroller(scroller, doffset) {
let { x: x0, y: y0 } = Browser.getScrollboxPosition(scroller); let scroll = Browser.getScrollboxPosition(scroller);
scroller.scrollBy(doffset.x, doffset.y); scroller.scrollBy(doffset.x, doffset.y);
let { x: x1, y: y1 } = Browser.getScrollboxPosition(scroller); let scroll1 = Browser.getScrollboxPosition(scroller);
doffset.subtract(x1 - x0, y1 - y0); doffset.subtract(scroll1.x - scroll.x, scroll1.y - scroll.y);
} }
}; };