Files
palemoon27/browser/components/statusbar/content/tabbrowser.xml
T

219 lines
5.0 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<bindings id="status4evar-bindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="statuspanel" display="xul:hbox" extends="chrome://browser/content/tabbrowser.xml#statuspanel">
<implementation>
<!-- -->
<!-- Inverted mirror handling -->
<!-- -->
<field name="_invertMirror"><![CDATA[
false
]]></field>
<property name="invertMirror">
<setter><![CDATA[
this._invertMirror = val;
this.mirror = this._isMirrored;
return val;
]]></setter>
<getter><![CDATA[
return this._invertMirror;
]]></getter>
</property>
<!-- -->
<!-- Mouse mirror handling -->
<!-- -->
<field name="_mouseMirror"><![CDATA[
true
]]></field>
<field name="_mouseMirrorListen"><![CDATA[
false
]]></field>
<property name="mouseMirror">
<setter><![CDATA[
this._mouseMirror = val;
this.setupMouseMirror(this.value);
return val;
]]></setter>
<getter><![CDATA[
return this._mouseMirror;
]]></getter>
</property>
<method name="setupMouseMirror">
<parameter name="val"/>
<body><![CDATA[
if(val && this._mouseMirror)
{
this._calcMouseTargetRect();
if(!this._mouseMirrorListen)
{
MousePosTracker.addListener(this);
this._mouseMirrorListen = true;
}
}
else
{
this.mirror = false;
if(this._mouseMirrorListen)
{
MousePosTracker.removeListener(this);
this._mouseMirrorListen = false;
}
}
]]></body>
</method>
<method name="_calcMouseTargetRect">
<body><![CDATA[
let alignRight = false;
let isRTL = (getComputedStyle(document.documentElement).direction == "rtl");
if((this._invertMirror && !isRTL) || (!this._invertMirror && isRTL))
{
alignRight = true;
}
let rect = this.getBoundingClientRect();
this._mouseTargetRect =
{
top: rect.top,
bottom: rect.bottom,
left: ((alignRight) ? window.innerWidth - rect.width : 0),
right: ((alignRight) ? window.innerWidth : rect.width)
};
]]></body>
</method>
<method name="onMouseEnter">
<body><![CDATA[
this.mirror = true;
]]></body>
</method>
<method name="onMouseLeave">
<body><![CDATA[
this.mirror = false;
]]></body>
</method>
<!-- -->
<!-- Mirror handling -->
<!-- -->
<field name="_isMirrored"><![CDATA[
false
]]></field>
<property name="mirror">
<setter><![CDATA[
this._isMirrored = val;
if(this._invertMirror)
{
val = !val;
}
this.setBooleanAttr("mirror", val);
]]></setter>
<getter><![CDATA[
return this._isMirrored;
]]></getter>
</property>
<method name="_mirror">
<body><![CDATA[
this.mirror = !this._isMirrored;
]]></body>
</method>
<!-- -->
<!-- Value handling -->
<!-- -->
<property name="label">
<setter><![CDATA[
if(window.caligon && window.caligon.status4evar)
{
window.caligon.status4evar.statusService.setStatusText(val);
}
return undefined;
]]></setter>
<getter><![CDATA[
if(window.caligon && window.caligon.status4evar)
{
return window.caligon.status4evar.statusService.getStatusText();
}
return "";
]]></getter>
</property>
<property name="value">
<setter><![CDATA[
this.setValue(val);
this.setupMouseMirror(val);
return val;
]]></setter>
<getter><![CDATA[
return ((this.hasAttribute("inactive")) ? "" : this.getAttribute("label"));
]]></getter>
</property>
<method name="setValue">
<parameter name="val"/>
<body><![CDATA[
if((this.getAttribute("type") || "").indexOf("network") > -1 && (this.getAttribute("previoustype") || "").indexOf("network") > -1)
{
this.style.minWidth = getComputedStyle(this).width;
}
else
{
this.style.minWidth = "";
}
if(val)
{
this.setAttribute("label", val);
this.setBooleanAttr("inactive", false);
}
else
{
this.setBooleanAttr("inactive", true);
}
]]></body>
</method>
<!-- -->
<!-- Helpers -->
<!-- -->
<method name="setBooleanAttr">
<parameter name="name"/>
<parameter name="val"/>
<body><![CDATA[
if(val)
{
this.setAttribute(name, "true");
}
else
{
this.removeAttribute(name);
}
]]></body>
</method>
</implementation>
</binding>
</bindings>