зеркало из https://github.com/mozilla/gecko-dev.git
Bug 474964: fix tabbrowser mousewheel scrolling (tabbrowser needs to override default scrollbox behavior since bug 457651), r=mano/Natch
This commit is contained in:
Родитель
daac235263
Коммит
7ba94e5174
|
@ -6,11 +6,9 @@
|
|||
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-tab");
|
||||
}
|
||||
|
||||
%ifdef XP_MACOSX
|
||||
.tabbrowser-arrowscrollbox {
|
||||
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-arrowscrollbox");
|
||||
}
|
||||
%endif
|
||||
|
||||
.tab-close-button, .tabs-closebutton {
|
||||
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-close-tab-button");
|
||||
|
|
|
@ -2813,8 +2813,27 @@
|
|||
</handlers>
|
||||
</binding>
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
<binding id="tabbrowser-arrowscrollbox" extends="chrome://global/content/bindings/scrollbox.xml#arrowscrollbox-clicktoscroll">
|
||||
<implementation>
|
||||
<!-- Override scrollbox.xml method, since our scrollbox's children are
|
||||
inherited from the binding parent -->
|
||||
<method name="_getScrollableElements">
|
||||
<body><![CDATA[
|
||||
return document.getBindingParent(this).childNodes;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
#ifndef XP_MACOSX
|
||||
</implementation>
|
||||
#else
|
||||
<field name="_scrollButtonDownBox">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "down-box");
|
||||
</field>
|
||||
<field name="_scrollButtonDownBoxAnimate">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "down-box-animate");
|
||||
</field>
|
||||
</implementation>
|
||||
|
||||
<content>
|
||||
<xul:toolbarbutton class="scrollbutton-up" collapsed="true"
|
||||
xbl:inherits="orient"
|
||||
|
@ -2844,14 +2863,7 @@
|
|||
chromedir="&locale.dir;"/>
|
||||
</xul:stack>
|
||||
</content>
|
||||
<implementation>
|
||||
<field name="_scrollButtonDownBox">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "down-box");
|
||||
</field>
|
||||
<field name="_scrollButtonDownBoxAnimate">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "down-box-animate");
|
||||
</field>
|
||||
</implementation>
|
||||
|
||||
<handlers>
|
||||
<handler event="underflow"><![CDATA[
|
||||
// filter underflow events which were dispatched on nested scrollboxes
|
||||
|
@ -2899,8 +2911,8 @@
|
|||
]]></handler>
|
||||
|
||||
</handlers>
|
||||
</binding>
|
||||
#endif
|
||||
</binding>
|
||||
|
||||
<binding id="tabbrowser-tabs"
|
||||
extends="chrome://global/content/bindings/tabbox.xml#tabs">
|
||||
|
|
|
@ -247,12 +247,17 @@
|
|||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="_getScrollableElements">
|
||||
<body><![CDATA[
|
||||
return this.hasChildNodes() ?
|
||||
this.childNodes : document.getBindingParent(this).childNodes;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="_elementFromPoint">
|
||||
<parameter name="aX"/>
|
||||
<body><![CDATA[
|
||||
var elements = this.hasChildNodes() ?
|
||||
this.childNodes :
|
||||
document.getBindingParent(this).childNodes;
|
||||
var elements = this._getScrollableElements();
|
||||
if (!this._isLTRScrollbox) {
|
||||
elements = Array.slice(elements);
|
||||
elements.reverse();
|
||||
|
@ -620,10 +625,10 @@
|
|||
|
||||
if (!targetElement) {
|
||||
// scroll to the first resp. last element
|
||||
var container = this.hasChildNodes() ? this : document.getBindingParent(this);
|
||||
var elements = this._getScrollableElements();
|
||||
targetElement = (this._isLTRScrollbox ? scrollLeft : !scrollLeft) ?
|
||||
container.firstChild :
|
||||
container.lastChild;
|
||||
elements.item(0) :
|
||||
elements.item(elements.length-1);
|
||||
}
|
||||
|
||||
this.ensureElementIsVisible(targetElement);
|
||||
|
|
Загрузка…
Ссылка в новой задаче