bug 213228: new toolkit independence bug, part 7: update and use the new toolkit widgetry.

tabbox.xml: bug 106656, 173703, 184821 by neil, bug 209885 by Alex Vincent <ajvincent@juno.com>


git-svn-id: svn://10.0.0.236/trunk@146127 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
chanial%noos.fr 2003-08-17 11:11:17 +00:00
parent a0b854aabf
commit f5b1982bc6

View File

@ -144,15 +144,7 @@
})]]>
</field>
<field name="_eventNode">
var eventNode = this;
switch (this.getAttribute("eventnode")) {
case "parent": eventNode = this.parentNode; break;
case "window": eventNode = window; break;
case "document": eventNode = document; break;
}
eventNode;
</field>
<field name="_eventNode">this</field>
<property name="eventNode" onget="return this._eventNode;">
<setter>
@ -168,6 +160,11 @@
</property>
<constructor>
switch (this.getAttribute("eventnode")) {
case "parent": this._eventNode = this.parentNode; break;
case "window": this._eventNode = window; break;
case "document": this._eventNode = document; break;
}
this._eventNode.addEventListener("keypress", this._keyEventHandler, false);
</constructor>
@ -178,7 +175,7 @@
</binding>
<binding id="tabs" display="xul:box"
extends="chrome://global/content/bindings/tabbox.xml#tab-base">
extends="chrome://global/content/widgets/tabbox.xml#tab-base">
<content>
<xul:spacer class="tabs-left"/>
<children/>
@ -238,8 +235,15 @@
if (parent.localName == 'tabbox') {
var tabpanels = parent._tabpanels;
// This will cause an onselect event to fire for the tabpanel element.
if (tabpanels)
tabpanels.selectedIndex = val;
if (tabpanels) {
// find an id
var linkedPanelId = tabs[val].linkedPanel;
var linkedPanel = linkedPanelId ? document.getElementById(linkedPanelId) : null;
if (linkedPanel)
tabpanels.selectedPanel = linkedPanel;
else
tabpanels.selectedIndex = val;
}
break;
}
}
@ -355,7 +359,7 @@
</binding>
<binding id="tabs-closebutton"
extends="chrome://global/content/bindings/tabbox.xml#tabs">
extends="chrome://global/content/widgets/tabbox.xml#tabs">
<content>
<xul:hbox flex="1" style="min-width: 1px;">
<children/>
@ -364,14 +368,14 @@
<xul:stack>
<xul:spacer class="tabs-right"/>
<xul:hbox class="tabs-closebutton-box" align="center" pack="end">
<xul:toolbarbutton ondblclick="event.preventBubble();" class="tabs-closebutton close-button" xbl:inherits="disabled=disableclose,oncommand=onclosetab"/>
<xul:toolbarbutton class="tabs-closebutton close-button" xbl:inherits="disabled=disableclose,oncommand=onclosetab"/>
</xul:hbox>
</xul:stack>
</content>
</binding>
<binding id="tabpanels"
extends="chrome://global/content/bindings/tabbox.xml#tab-base">
extends="chrome://global/content/widgets/tabbox.xml#tab-base">
<implementation implements="nsIAccessibleProvider">
<property name="accessible">
<getter>
@ -382,6 +386,8 @@
</getter>
</property>
<field name="_selectedPanel">null</field>
<property name="selectedIndex">
<getter>
<![CDATA[
@ -392,12 +398,14 @@
<setter>
<![CDATA[
if (this.selectedIndex == val)
return val;
var panel = this._selectedPanel;
this._selectedPanel = this.childNodes[val];
this.setAttribute("selectedIndex", val);
var event = document.createEvent("Events");
event.initEvent("select", false, true);
this.dispatchEvent(event);
if (this._selectedPanel != panel) {
var event = document.createEvent("Events");
event.initEvent("select", false, true);
this.dispatchEvent(event);
}
return val;
]]>
</setter>
@ -407,7 +415,7 @@
<property name="selectedPanel">
<getter>
<![CDATA[
return this.childNodes[this.selectedIndex];
return this._selectedPanel;
]]>
</getter>
@ -425,7 +433,7 @@
</binding>
<binding id="tab" display="xul:button"
extends="chrome://global/content/bindings/tabbox.xml#tab-base">
extends="chrome://global/content/widgets/tabbox.xml#tab-base">
<content>
<xul:image class="tab-icon" xbl:inherits="validate,src=image"/>
<xul:label class="tab-text" xbl:inherits="value=label,accesskey,crop,disabled" flex="1"/>
@ -477,19 +485,15 @@
return val;
</setter>
</property>
<property name="linkedPanel" onget="return this.getAttribute('linkedpanel')"
onset="this.setAttribute('linkedpanel', val); return val;"/>
</implementation>
<handlers>
<handler event="click" button="0">
<![CDATA[
var tabs = this.parentNode;
do {
if (tabs.localName == "tabs")
break;
tabs = tabs.parentNode;
} while(tabs.localName != "tabbox");
tabs.selectedItem = this;
if (!this.selected) this.selected = true;
this.parentNode.selectedItem = this;
]]>
</handler>