зеркало из https://github.com/mozilla/gecko-dev.git
Bug 606672 - Fennec scrolling code is too expensive. part1, part2. [r=mfinkle]
--HG-- extra : rebase_source : b7f80e3e0ac699b1593954aff57e9ca262c6eb61
This commit is contained in:
Родитель
82495b20b5
Коммит
32113c01eb
|
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче