зеркало из 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");
|
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-tab");
|
||||||
}
|
}
|
||||||
|
|
||||||
%ifdef XP_MACOSX
|
|
||||||
.tabbrowser-arrowscrollbox {
|
.tabbrowser-arrowscrollbox {
|
||||||
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-arrowscrollbox");
|
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-arrowscrollbox");
|
||||||
}
|
}
|
||||||
%endif
|
|
||||||
|
|
||||||
.tab-close-button, .tabs-closebutton {
|
.tab-close-button, .tabs-closebutton {
|
||||||
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-close-tab-button");
|
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-close-tab-button");
|
||||||
|
|
|
@ -2813,8 +2813,27 @@
|
||||||
</handlers>
|
</handlers>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<binding id="tabbrowser-arrowscrollbox" extends="chrome://global/content/bindings/scrollbox.xml#arrowscrollbox-clicktoscroll">
|
<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>
|
<content>
|
||||||
<xul:toolbarbutton class="scrollbutton-up" collapsed="true"
|
<xul:toolbarbutton class="scrollbutton-up" collapsed="true"
|
||||||
xbl:inherits="orient"
|
xbl:inherits="orient"
|
||||||
|
@ -2844,14 +2863,7 @@
|
||||||
chromedir="&locale.dir;"/>
|
chromedir="&locale.dir;"/>
|
||||||
</xul:stack>
|
</xul:stack>
|
||||||
</content>
|
</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>
|
<handlers>
|
||||||
<handler event="underflow"><![CDATA[
|
<handler event="underflow"><![CDATA[
|
||||||
// filter underflow events which were dispatched on nested scrollboxes
|
// filter underflow events which were dispatched on nested scrollboxes
|
||||||
|
@ -2899,8 +2911,8 @@
|
||||||
]]></handler>
|
]]></handler>
|
||||||
|
|
||||||
</handlers>
|
</handlers>
|
||||||
</binding>
|
|
||||||
#endif
|
#endif
|
||||||
|
</binding>
|
||||||
|
|
||||||
<binding id="tabbrowser-tabs"
|
<binding id="tabbrowser-tabs"
|
||||||
extends="chrome://global/content/bindings/tabbox.xml#tabs">
|
extends="chrome://global/content/bindings/tabbox.xml#tabs">
|
||||||
|
|
|
@ -247,12 +247,17 @@
|
||||||
]]></body>
|
]]></body>
|
||||||
</method>
|
</method>
|
||||||
|
|
||||||
|
<method name="_getScrollableElements">
|
||||||
|
<body><![CDATA[
|
||||||
|
return this.hasChildNodes() ?
|
||||||
|
this.childNodes : document.getBindingParent(this).childNodes;
|
||||||
|
]]></body>
|
||||||
|
</method>
|
||||||
|
|
||||||
<method name="_elementFromPoint">
|
<method name="_elementFromPoint">
|
||||||
<parameter name="aX"/>
|
<parameter name="aX"/>
|
||||||
<body><![CDATA[
|
<body><![CDATA[
|
||||||
var elements = this.hasChildNodes() ?
|
var elements = this._getScrollableElements();
|
||||||
this.childNodes :
|
|
||||||
document.getBindingParent(this).childNodes;
|
|
||||||
if (!this._isLTRScrollbox) {
|
if (!this._isLTRScrollbox) {
|
||||||
elements = Array.slice(elements);
|
elements = Array.slice(elements);
|
||||||
elements.reverse();
|
elements.reverse();
|
||||||
|
@ -620,10 +625,10 @@
|
||||||
|
|
||||||
if (!targetElement) {
|
if (!targetElement) {
|
||||||
// scroll to the first resp. last element
|
// scroll to the first resp. last element
|
||||||
var container = this.hasChildNodes() ? this : document.getBindingParent(this);
|
var elements = this._getScrollableElements();
|
||||||
targetElement = (this._isLTRScrollbox ? scrollLeft : !scrollLeft) ?
|
targetElement = (this._isLTRScrollbox ? scrollLeft : !scrollLeft) ?
|
||||||
container.firstChild :
|
elements.item(0) :
|
||||||
container.lastChild;
|
elements.item(elements.length-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.ensureElementIsVisible(targetElement);
|
this.ensureElementIsVisible(targetElement);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче