зеркало из https://github.com/mozilla/gecko-dev.git
Bug 486821 - Misplaced white line under last visible entry of location bar autocomplete. r=enn
This commit is contained in:
Родитель
ca41bce966
Коммит
725fb78407
|
@ -1038,11 +1038,11 @@
|
|||
// Default the height to 0 if we have no rows to show
|
||||
let height = 0;
|
||||
if (numRows) {
|
||||
let lastRowShown = rows[numRows - 1];
|
||||
let firstRowRect = rows[0].getBoundingClientRect();
|
||||
let lastRowRect = rows[numRows - 1].getBoundingClientRect();
|
||||
|
||||
// Calculate the height to have the first row to last row shown
|
||||
height = lastRowShown.boxObject.y + lastRowShown.boxObject.height -
|
||||
rows[0].boxObject.y;
|
||||
height = lastRowRect.bottom - firstRowRect.top;
|
||||
}
|
||||
|
||||
// Only update the height if we have a non-zero height and if it
|
||||
|
|
|
@ -58,12 +58,14 @@
|
|||
</content>
|
||||
|
||||
<implementation>
|
||||
<field name="scrollBoxObject">null</field>
|
||||
<field name="_scrollbox">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "main-box");
|
||||
</field>
|
||||
<field name="scrollBoxObject">
|
||||
this._scrollbox.boxObject.QueryInterface(Components.interfaces.nsIScrollBoxObject);
|
||||
</field>
|
||||
<constructor>
|
||||
<![CDATA[
|
||||
var x = document.getAnonymousElementByAttribute(this, "anonid", "main-box");
|
||||
this.scrollBoxObject = x.boxObject.QueryInterface(Components.interfaces.nsIScrollBoxObject);
|
||||
|
||||
// add a template build listener
|
||||
if (this.builder)
|
||||
this.builder.addListener(this._builderListener);
|
||||
|
@ -187,8 +189,19 @@
|
|||
<parameter name="aElement"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
if (aElement)
|
||||
this.scrollBoxObject.ensureElementIsVisible(aElement);
|
||||
if (!aElement)
|
||||
return;
|
||||
var targetRect = aElement.getBoundingClientRect();
|
||||
var scrollRect = this._scrollbox.getBoundingClientRect();
|
||||
var offset = targetRect.top - scrollRect.top;
|
||||
if (offset >= 0) {
|
||||
// scrollRect.bottom wouldn't take a horizontal scroll bar into account
|
||||
let scrollRectBottom = scrollRect.top + this._scrollbox.clientHeight;
|
||||
offset = targetRect.bottom - scrollRectBottom;
|
||||
if (offset <= 0)
|
||||
return;
|
||||
}
|
||||
this._scrollbox.scrollTop += offset;
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
@ -461,7 +474,7 @@
|
|||
<handler event="click">
|
||||
<![CDATA[
|
||||
// clicking into nothing should unselect
|
||||
if (event.originalTarget.getAttribute("anonid") == "main-box") {
|
||||
if (event.originalTarget == this._scrollbox) {
|
||||
this.clearSelection();
|
||||
this.currentItem = null;
|
||||
}
|
||||
|
@ -470,17 +483,13 @@
|
|||
|
||||
<handler event="MozSwipeGesture">
|
||||
<![CDATA[
|
||||
// Figure out where to scroll to
|
||||
let targetHeight = 0;
|
||||
let scrollBox = document.getAnonymousElementByAttribute(this, "anonid", "main-box");
|
||||
|
||||
// Only handle swipe gestures up and down
|
||||
switch (event.direction) {
|
||||
case event.DIRECTION_DOWN:
|
||||
targetHeight = scrollBox.scrollHeight;
|
||||
// Fall through for actual action
|
||||
this._scrollbox.scrollTop = this._scrollbox.scrollHeight;
|
||||
break;
|
||||
case event.DIRECTION_UP:
|
||||
scrollBox.scrollTop = targetHeight;
|
||||
this._scrollbox.scrollTop = 0;
|
||||
break;
|
||||
}
|
||||
]]>
|
||||
|
|
Загрузка…
Ссылка в новой задаче