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:
parent
a0b854aabf
commit
f5b1982bc6
@ -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>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user