Bug 474964: fix tabbrowser mousewheel scrolling (tabbrowser needs to override default scrollbox behavior since bug 457651), r=mano/Natch

This commit is contained in:
Gavin Sharp 2009-01-25 03:06:45 -05:00
Родитель daac235263
Коммит 7ba94e5174
3 изменённых файлов: 33 добавлений и 18 удалений

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

@ -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);