[Pkg-mozext-commits] [firegestures] 02/05: Imported Upstream version 1.8.4

David Prévot taffit at moszumanska.debian.org
Wed Mar 5 20:46:00 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository firegestures.

commit 437c6fe5df12724dc625c1786cec0fe4bb6924d1
Author: David Prévot <taffit at debian.org>
Date:   Wed Mar 5 16:23:11 2014 -0300

    Imported Upstream version 1.8.4
---
 LICENSE.txt                              | 114 ++---
 chrome/content/firegestures/bindings.xml | 238 +++++------
 chrome/content/firegestures/browser.js   |  45 +-
 chrome/content/firegestures/prefs.xul    | 688 +++++++++++++++----------------
 install.rdf                              |   4 +-
 5 files changed, 546 insertions(+), 543 deletions(-)

diff --git a/LICENSE.txt b/LICENSE.txt
index 2fd3e4d..0d11bab 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,57 +1,57 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is FireGestures.
- *
- * The Initial Developer of the Original Code is Gomita <gomita at xuldev.org>.
- * Portions created by the Initial Developer are Copyright (C) 2014
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- *     The Mouse Trails part in "xdGestureHandler.js" is derived from 
- *     Optimoz Mouse Gestures extension.
- *
- *     The Original Code is Mouse Gesture for Mozilla.
- *
- *     The Initial Developer of the Original Code is Jens Bannmann.
- *     Portions created by the Initial Developer are Copyright (C) 2003
- *     the Initial Developer. All Rights Reserved.
- *
- *     Contributor(s):
- *         Jens Bannmann <jens.b at web.de>
- *         Jochen <bugs at krickelkrackel.de>
- *         Mike Kozlowski <mozdev at klio.org>
- *
- *     Some parts in "xdGestureHandler.js" is derived from 
- *     All-in-One Gestures extension.
- *
- *     The Original Code is the "All-in-One Gestures" extension for Phoenix.
- *
- *     The Initial Developer of the Original Code is Marc Boullet <boullet.marc at orange.fr>
- *     Portions created by Marc Boullet are Copyright (C) 2003, 
- *     Marc Boullet. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FireGestures.
+ *
+ * The Initial Developer of the Original Code is Gomita <gomita at xuldev.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2014
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ *     The Mouse Trails part in "xdGestureHandler.js" is derived from 
+ *     Optimoz Mouse Gestures extension.
+ *
+ *     The Original Code is Mouse Gesture for Mozilla.
+ *
+ *     The Initial Developer of the Original Code is Jens Bannmann.
+ *     Portions created by the Initial Developer are Copyright (C) 2003
+ *     the Initial Developer. All Rights Reserved.
+ *
+ *     Contributor(s):
+ *         Jens Bannmann <jens.b at web.de>
+ *         Jochen <bugs at krickelkrackel.de>
+ *         Mike Kozlowski <mozdev at klio.org>
+ *
+ *     Some parts in "xdGestureHandler.js" is derived from 
+ *     All-in-One Gestures extension.
+ *
+ *     The Original Code is the "All-in-One Gestures" extension for Phoenix.
+ *
+ *     The Initial Developer of the Original Code is Marc Boullet <boullet.marc at orange.fr>
+ *     Portions created by Marc Boullet are Copyright (C) 2003, 
+ *     Marc Boullet. All Rights Reserved.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
diff --git a/chrome/content/firegestures/bindings.xml b/chrome/content/firegestures/bindings.xml
index cc90391..3e1153f 100644
--- a/chrome/content/firegestures/bindings.xml
+++ b/chrome/content/firegestures/bindings.xml
@@ -1,119 +1,119 @@
-<?xml version="1.0" ?>
-
-<bindings id="FireGesturesBindings"
-          xmlns="http://www.mozilla.org/xbl"
-          xmlns:xbl="http://www.mozilla.org/xbl"
-          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-	<binding id="popup" role="xul:menupopup"
-	         extends="chrome://global/content/bindings/popup.xml#popup-base">
-		<content wheelscroll="false">
-			<xul:arrowscrollbox anonid="scrollbox" class="popup-internal-box" flex="1" orient="vertical"
-			                    smoothscroll="false">
-				<children />
-			</xul:arrowscrollbox>
-		</content>
-		<implementation implements="nsIDOMEventListener">
-			<constructor><![CDATA[
-				this.style.MozAppearance = "menupopup";
-				if (this.localName == "panel")
-					this.setAttribute("noautohide", "true");
-			]]></constructor>
-			<field name="_currentItem">null</field>
-			<property name="currentItem">
-				<getter><![CDATA[
-					return this._currentItem;
-				]]></getter>
-				<setter><![CDATA[
-					if (this.currentItem) {
-						this.currentItem.removeAttribute("_moz-menuactive");
-						var evt = this.ownerDocument.createEvent("Events");
-						evt.initEvent("DOMMenuItemInactive", true, true);
-						this.currentItem.dispatchEvent(evt);
-						this._currentItem = null;
-					}
-					if (!val)
-						return;
-					this._currentItem = val;
-					val.setAttribute("_moz-menuactive", "true");
-					var evt = this.ownerDocument.createEvent("Events");
-					evt.initEvent("DOMMenuItemActive", true, true);
-					val.dispatchEvent(evt);
-					var scrollbox = document.getAnonymousElementByAttribute(this, "anonid", "scrollbox");
-					scrollbox.ensureElementIsVisible(val);
-				]]></setter>
-			</property>
-			<property name="defaultItem" readonly="true">
-				<getter><![CDATA[
-					return this.querySelector("menuitem[default='true']");
-				]]></getter>
-			</property>
-			<method name="handleEvent">
-				<parameter name="event" />
-				<body><![CDATA[
-					switch (event.type) {
-						case "mouseover": 
-							if (event.target.parentNode != this)
-								break;
-							this.currentItem = event.target;
-							break;
-						case "DOMMouseScroll": 
-							event.preventDefault();
-							event.stopPropagation();
-							var elt = this.currentItem;
-							do {
-								elt = event.detail < 0 ? elt.previousSibling || this.lastChild
-								                       : elt.nextSibling     || this.firstChild;
-								if (elt.localName == "menuitem")
-									break;
-							}
-							while (elt != this.currentItem);
-							this.currentItem = elt;
-							break;
-						case "MozMousePixelScroll": 
-							event.preventDefault();
-							event.stopPropagation();
-							break;
-						case "mouseup": 
-							if (this.currentItem && 
-							    this.currentItem.getAttribute("_moz-menuactive") == "true") {
-								var evt = this.ownerDocument.createEvent("xulcommandevent");
-								evt.initCommandEvent(
-									"command", true, true, this.ownerDocument.defaultView, 0, 
-									false, false, false, false, null
-								);
-								this.currentItem.dispatchEvent(evt);
-							}
-							this.hidePopup();
-							break;
-					}
-				]]></body>
-			</method>
-		</implementation>
-		<handlers>
-			<handler event="popupshown" phase="target"><![CDATA[
-				if (this.defaultItem)
-					this.defaultItem.style.fontWeight = "bold";
-				if (this.getAttribute("wheelscroll") == "true") {
-					this.currentItem = this.defaultItem || this.firstChild;
-					this.addEventListener("mouseover", this, false);
-					this.ownerDocument.documentElement.addEventListener("DOMMouseScroll", this, true);
-					this.ownerDocument.documentElement.addEventListener("MozMousePixelScroll", this, true);
-					this.ownerDocument.documentElement.addEventListener("mouseup", this, true);
-				}
-			]]></handler>
-			<handler event="popuphiding" phase="target"><![CDATA[
-				if (this.getAttribute("wheelscroll") == "true") {
-					this.removeEventListener("mouseover", this, false);
-					this.ownerDocument.documentElement.removeEventListener("DOMMouseScroll", this, true);
-					this.ownerDocument.documentElement.removeEventListener("MozMousePixelScroll", this, true);
-					this.ownerDocument.documentElement.removeEventListener("mouseup", this, true);
-				}
-				this._currentItem = null;
-				while (this.hasChildNodes())
-					this.removeChild(this.lastChild);
-			]]></handler>
-		</handlers>
-	</binding>
-
-</bindings>
+<?xml version="1.0" ?>
+
+<bindings id="FireGesturesBindings"
+          xmlns="http://www.mozilla.org/xbl"
+          xmlns:xbl="http://www.mozilla.org/xbl"
+          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+	<binding id="popup" role="xul:menupopup"
+	         extends="chrome://global/content/bindings/popup.xml#popup-base">
+		<content wheelscroll="false">
+			<xul:arrowscrollbox anonid="scrollbox" class="popup-internal-box" flex="1" orient="vertical"
+			                    smoothscroll="false">
+				<children />
+			</xul:arrowscrollbox>
+		</content>
+		<implementation implements="nsIDOMEventListener">
+			<constructor><![CDATA[
+				this.style.MozAppearance = "menupopup";
+				if (this.localName == "panel")
+					this.setAttribute("noautohide", "true");
+			]]></constructor>
+			<field name="_currentItem">null</field>
+			<property name="currentItem">
+				<getter><![CDATA[
+					return this._currentItem;
+				]]></getter>
+				<setter><![CDATA[
+					if (this.currentItem) {
+						this.currentItem.removeAttribute("_moz-menuactive");
+						var evt = this.ownerDocument.createEvent("Events");
+						evt.initEvent("DOMMenuItemInactive", true, true);
+						this.currentItem.dispatchEvent(evt);
+						this._currentItem = null;
+					}
+					if (!val)
+						return;
+					this._currentItem = val;
+					val.setAttribute("_moz-menuactive", "true");
+					var evt = this.ownerDocument.createEvent("Events");
+					evt.initEvent("DOMMenuItemActive", true, true);
+					val.dispatchEvent(evt);
+					var scrollbox = document.getAnonymousElementByAttribute(this, "anonid", "scrollbox");
+					scrollbox.ensureElementIsVisible(val);
+				]]></setter>
+			</property>
+			<property name="defaultItem" readonly="true">
+				<getter><![CDATA[
+					return this.querySelector("menuitem[default='true']");
+				]]></getter>
+			</property>
+			<method name="handleEvent">
+				<parameter name="event" />
+				<body><![CDATA[
+					switch (event.type) {
+						case "mouseover": 
+							if (event.target.parentNode != this)
+								break;
+							this.currentItem = event.target;
+							break;
+						case "DOMMouseScroll": 
+							event.preventDefault();
+							event.stopPropagation();
+							var elt = this.currentItem;
+							do {
+								elt = event.detail < 0 ? elt.previousSibling || this.lastChild
+								                       : elt.nextSibling     || this.firstChild;
+								if (elt.localName == "menuitem")
+									break;
+							}
+							while (elt != this.currentItem);
+							this.currentItem = elt;
+							break;
+						case "MozMousePixelScroll": 
+							event.preventDefault();
+							event.stopPropagation();
+							break;
+						case "mouseup": 
+							if (this.currentItem && 
+							    this.currentItem.getAttribute("_moz-menuactive") == "true") {
+								var evt = this.ownerDocument.createEvent("xulcommandevent");
+								evt.initCommandEvent(
+									"command", true, true, this.ownerDocument.defaultView, 0, 
+									false, false, false, false, null
+								);
+								this.currentItem.dispatchEvent(evt);
+							}
+							this.hidePopup();
+							break;
+					}
+				]]></body>
+			</method>
+		</implementation>
+		<handlers>
+			<handler event="popupshown" phase="target"><![CDATA[
+				if (this.defaultItem)
+					this.defaultItem.style.fontWeight = "bold";
+				if (this.getAttribute("wheelscroll") == "true") {
+					this.currentItem = this.defaultItem || this.firstChild;
+					this.addEventListener("mouseover", this, false);
+					this.ownerDocument.documentElement.addEventListener("DOMMouseScroll", this, true);
+					this.ownerDocument.documentElement.addEventListener("MozMousePixelScroll", this, true);
+					this.ownerDocument.documentElement.addEventListener("mouseup", this, true);
+				}
+			]]></handler>
+			<handler event="popuphiding" phase="target"><![CDATA[
+				if (this.getAttribute("wheelscroll") == "true") {
+					this.removeEventListener("mouseover", this, false);
+					this.ownerDocument.documentElement.removeEventListener("DOMMouseScroll", this, true);
+					this.ownerDocument.documentElement.removeEventListener("MozMousePixelScroll", this, true);
+					this.ownerDocument.documentElement.removeEventListener("mouseup", this, true);
+				}
+				this._currentItem = null;
+				while (this.hasChildNodes())
+					this.removeChild(this.lastChild);
+			]]></handler>
+		</handlers>
+	</binding>
+
+</bindings>
diff --git a/chrome/content/firegestures/browser.js b/chrome/content/firegestures/browser.js
index e1718ed..829642c 100755
--- a/chrome/content/firegestures/browser.js
+++ b/chrome/content/firegestures/browser.js
@@ -57,7 +57,8 @@ var FireGestures = {
 		if (gInPrintPreviewMode) {
 			return false;
 		}
-		if (event.target instanceof HTMLCanvasElement) {
+		if (event.target instanceof HTMLCanvasElement && 
+		    event.target.parentNode instanceof Ci.nsIDOMXULElement) {
 			return false;
 		}
 		return true;
@@ -184,13 +185,7 @@ var FireGestures = {
 					document.getElementById("cmd_closeWindow").doCommand();
 				break;
 			case "FireGestures:UndoCloseTab": 
-				try { document.getElementById("History:UndoCloseTab").doCommand(); }
-				catch(ex) {
-					if ("undoRemoveTab" in gBrowser)
-						gBrowser.undoRemoveTab();
-					else
-						throw "Session Restore feature is disabled.";
-				}
+				document.getElementById("History:UndoCloseTab").doCommand();
 				break;
 			case "FireGestures:PreviousTab": 
 				gBrowser.mTabContainer.advanceSelectedTab(-1, true);
@@ -323,6 +318,9 @@ var FireGestures = {
 				var imageURL = this.getImageURL();
 				if (!imageURL)
 					throw this._getLocaleString("ERROR_NOT_ON_IMAGE");
+				var onCanvas = this.sourceNode instanceof HTMLCanvasElement;
+				if (onCanvas)
+					this.checkURL(imageURL, gBrowser.contentDocument, Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
 				openUILink(imageURL, event);
 				break;
 			case "FireGestures:SaveImage": 
@@ -339,6 +337,10 @@ var FireGestures = {
 					                ? "SaveVideoTitle" : "SaveAudioTitle";
 					nsContextMenu.prototype.saveHelper(mediaURL, null, dialogTitle, false, doc);
 				}
+				else if (this.sourceNode instanceof HTMLCanvasElement) {
+					saveImageURL(mediaURL, "canvas.png", "SaveImageTitle", 
+					             false, skipPrompt, doc.documentURIObject, doc);
+				}
 				else {
 					this.checkURL(mediaURL, doc);
 					saveImageURL(mediaURL, null, "SaveImageTitle", 
@@ -532,6 +534,8 @@ var FireGestures = {
 			aNode = this.sourceNode;
 		if (aNode instanceof Ci.nsIImageLoadingContent && aNode.src)
 			return aNode.src;
+		else if (aNode instanceof HTMLCanvasElement)
+			return aNode.toDataURL();
 		if (aNode instanceof HTMLHtmlElement)
 			aNode = aNode.ownerDocument.body;
 		var win = aNode.ownerDocument.defaultView;
@@ -661,27 +665,26 @@ var FireGestures = {
 	},
 
 	closeMultipleTabs: function(aLeftRight) {
-		if ("closeLeftTabs" in gBrowser) {
-			if (aLeftRight == "left")
-				gBrowser.closeLeftTabs(gBrowser.mCurrentTab);
-			else
-				gBrowser.closeRightTabs(gBrowser.mCurrentTab);
-			return;
-		}
-		var tabs = Array.slice(gBrowser.mTabs);
-		var pos = gBrowser.mCurrentTab._tPos;
+		var tabs = gBrowser.visibleTabs.filter(function(tab) !tab.pinned);
+		var pos = tabs.indexOf(gBrowser.mCurrentTab);
 		var start = aLeftRight == "left" ? 0   : pos + 1;
 		var stop  = aLeftRight == "left" ? pos : tabs.length;
-		tabs = tabs.slice(start, stop).filter(function(tab) !tab.pinned && !tab.hidden);
+		tabs = tabs.slice(start, stop);
 		var shouldPrompt = Services.prefs.getBoolPref("browser.tabs.warnOnCloseOtherTabs");
 		if (shouldPrompt && tabs.length > 1) {
 			var ps = Services.prompt;
 			var bundle = gBrowser.mStringBundle;
+			var message;
+			try {
+				message = bundle.getFormattedString("tabs.closeWarningMultipleTabs", [tabs.length]);
+			}
+			catch (ex) {
+				message = PluralForm.get(tabs.length, bundle.getString("tabs.closeWarningMultiple")).
+				          replace("#1", tabs.length);
+			}
 			window.focus();
 			var ret = ps.confirmEx(
-				window, 
-				bundle.getString("tabs.closeWarningTitle"), 
-				bundle.getFormattedString("tabs.closeWarningMultipleTabs", [tabs.length]), 
+				window, bundle.getString("tabs.closeWarningTitle"), message, 
 				ps.BUTTON_TITLE_IS_STRING * ps.BUTTON_POS_0 + ps.BUTTON_TITLE_CANCEL * ps.BUTTON_POS_1, 
 				bundle.getString("tabs.closeButtonMultiple"), 
 				null, null, null, {}
diff --git a/chrome/content/firegestures/prefs.xul b/chrome/content/firegestures/prefs.xul
index f8abd21..074539e 100644
--- a/chrome/content/firegestures/prefs.xul
+++ b/chrome/content/firegestures/prefs.xul
@@ -1,344 +1,344 @@
-<?xml version="1.0"?>
-
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-<?xml-stylesheet href="chrome://firegestures/skin/prefs.css" type="text/css"?>
-
-<!DOCTYPE prefwindow SYSTEM "chrome://firegestures/locale/prefs.dtd">
-
-<prefwindow id="PrefsUI"
-            xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-            windowtype="FireGestures:Options"
-            title="FireGestures - &options;"
-            onload="PrefsUI.init();"
-            ondialogcancel="if (!document.documentElement.instantApply) gShouldCommit = false;"
-            onunload="PrefsUI.done();">
-
-	<prefpane id="mainPane" label="&mainPane;" flex="1">
-		<preferences>
-			<preference id="pref:mousegesture"  name="extensions.firegestures.mousegesture"     type="bool" />
-			<preference id="pref:triggerbutton" name="extensions.firegestures.trigger_button"   type="int" />
-			<preference id="pref:suppressalt"   name="extensions.firegestures.suppress.alt"     type="bool" />
-			<preference id="pref:trail"         name="extensions.firegestures.mousetrail"       type="bool" />
-			<preference id="pref:trailsize"     name="extensions.firegestures.mousetrail.size"  type="int" />
-			<preference id="pref:trailcolor"    name="extensions.firegestures.mousetrail.color" type="string" />
-			<preference id="pref:status"        name="extensions.firegestures.status_display"   type="int" />
-			<preference id="pref:timeout"       name="extensions.firegestures.gesture_timeout"  type="int" />
-		</preferences>
-		<groupbox uigroup="mousegesture">
-			<caption>
-				<checkbox id="mousegesture" label="&mouseGesture;"
-				          preference="pref:mousegesture"
-				          onsyncfrompreference="PrefsUI.updateMouseGestureUIGroup();" />
-			</caption>
-			<hbox align="center">
-				<label value="&triggerButton;:" />
-				<radiogroup orient="horizontal"
-				            preference="pref:triggerbutton"
-				            onsyncfrompreference="PrefsUI.updateTriggerButton();">
-					<radio value="0" label="&triggerButton.left;" />
-					<radio value="1" label="&triggerButton.middle;" />
-					<radio value="2" label="&triggerButton.right;" />
-				</radiogroup>
-			</hbox>
-			<checkbox label="&suppress.alt;" class="indent"
-			          preference="pref:suppressalt" />
-			<checkbox id="trail" label="&trail;"
-			          preference="pref:trail"
-			          onsyncfrompreference="PrefsUI.updateMouseGestureUIGroup();" />
-			<hbox align="center" class="indent" uigroup="trail">
-				<label value="&trail.color;:" />
-				<colorpicker id="trailColor" type="button"
-				             preference="pref:trailcolor"
-				             onchange="PrefsUI.updateTrail();" />
-				<spacer width="20" />
-				<label value="&trail.size;:" />
-				<hbox id="trailSampleOuter"><hbox id="trailSample" /></hbox>
-				<spinbuttons id="trailButtons"
-				             onup="PrefsUI.changeTrailSize(+1);"
-				             ondown="PrefsUI.changeTrailSize(-1);" />
-			</hbox>
-			<checkbox id="status" label="&status;"
-			          preference="pref:status"
-			          onsyncfrompreference="return PrefsUI.updateMouseGestureUIGroup();"
-			          onsynctopreference="return this.checked ? getElement('pref:status').defaultValue : 0;" />
-			<hbox align="center" class="indent" uigroup="status">
-				<label value="&status.description.1;" />
-				<textbox type="number" min="0" max="10" increment="0.1" decimalplaces="1" size="3"
-				         preference="pref:status"
-				         onsyncfrompreference="return getElement('pref:status').value / 1000;"
-				         onsynctopreference="return this.value * 1000;" />
-				<label value="&status.description.2;" />
-			</hbox>
-			<checkbox id="timeout" label="&timeout;"
-			          preference="pref:timeout"
-			          onsyncfrompreference="return PrefsUI.updateMouseGestureUIGroup();"
-			          onsynctopreference="return this.checked ? getElement('pref:timeout').defaultValue : 0;" />
-			<hbox align="center" class="indent" uigroup="timeout">
-				<label value="&timeout.description.1;" />
-				<textbox type="number" min="0" max="10" increment="0.1" decimalplaces="1" size="3"
-				         preference="pref:timeout"
-				         onsyncfrompreference="return getElement('pref:timeout').value / 1000;"
-				         onsynctopreference="return this.value * 1000;" />
-				<label value="&timeout.description.2;" />
-			</hbox>
-		</groupbox>
-		<groupbox>
-			<caption label="&mappings.title;" />
-			<hbox align="center">
-				<label value="&mappings.description;" />
-				<spacer flex="1" />
-				<button type="menu" label="&mappings.title;">
-					<menupopup onpopupshowing="PrefsUI.generateMappingsMenu(event);"
-					           oncommand="PrefsUI._gestureSvc.getMapping(event.target.id).configure();" />
-				</button>
-			</hbox>
-		</groupbox>
-		<groupbox>
-			<caption label="&tools.title;" />
-			<hbox align="center">
-				<label value="&tools.description;" />
-				<spacer flex="1" />
-				<button type="menu" label="&tools.title;">
-					<menupopup>
-						<menuitem label="&tools.backup.label;..." title="&tools.backup.label;"
-						          oncommand="PrefsUI.backupMappings(this);" />
-						<menuitem label="&tools.restore.label;..." title="&tools.restore.label;"
-						          alerttext="&tools.restore.alerttext;"
-						          oncommand="PrefsUI.restoreMappings(this);" />
-					</menupopup>
-				</button>
-			</hbox>
-		</groupbox>
-	</prefpane>
-
-	<prefpane id="mappingPane" label="&mappingPane;" flex="1">
-		<commandset id="mappingCommandSet" oncommand="PrefsUI.doCommand(event.target.id);">
-			<command id="cmd_edit_gesture" />
-			<command id="cmd_clear_gesture" />
-			<command id="cmd_add_script" />
-			<command id="cmd_delete_script" />
-		</commandset>
-		<tree id="mappingTree"
-		      onselect="PrefsUI.updateCommands();"
-		      ondblclick="PrefsUI.handleTreeEvent(event);"
-		      onkeypress="PrefsUI.handleTreeEvent(event);"
-		      rows="16" flex="1">
-			<treecols>
-				<treecol label="&treecol.name;" flex="5" primary="true" />
-				<splitter class="tree-splitter" />
-				<treecol label="&treecol.command;" flex="3" hidden="true" />
-				<splitter class="tree-splitter" />
-				<treecol label="&treecol.gesture;" flex="1" />
-			</treecols>
-			<treechildren flex="1"
-			              ondragstart="PrefsUI.handleTreeEvent(event);"
-			              ondragenter="PrefsUI.handleTreeEvent(event);"
-			              ondragover="PrefsUI.handleTreeEvent(event);"
-			              ondrop="PrefsUI.handleTreeEvent(event);" />
-		</tree>
-		<hbox id="mappingButtons" align="start">
-			<button label="&editButton.label;..."
-			        accesskey="&editButton.accesskey;"
-			        command="cmd_edit_gesture" />
-			<button label="&clearButton.label;"
-			        accesskey="&clearButton.accesskey;"
-			        command="cmd_clear_gesture" />
-			<button label="&addScriptButton.label;..."
-			        accesskey="&addScriptButton.accesskey;"
-			        command="cmd_add_script" />
-			<button label="&deleteScriptButton.label;"
-			        accesskey="&deleteScriptButton.accesskey;"
-			        command="cmd_delete_script" />
-		</hbox>
-		<label id="getScripts" value="&getScripts.label;" class="text-link" style="margin-bottom: 10px;"
-			   onclick="PrefsUI.openURL('http://www.xuldev.org/firegestures/getscripts.php');" />
-	</prefpane>
-
-	<prefpane id="advancedPane" label="&advancedPane;" flex="1">
-		<preferences>
-			<preference id="pref:wheelgesture"    name="extensions.firegestures.wheelgesture"    type="bool" />
-			<preference id="pref:rockergesture"   name="extensions.firegestures.rockergesture"   type="bool" />
-			<preference id="pref:keypressgesture" name="extensions.firegestures.keypressgesture" type="bool" />
-			<preference id="pref:tabwheelgesture" name="extensions.firegestures.tabwheelgesture" type="bool" />
-		</preferences>
-		<groupbox uigroup="wheelgesture">
-			<caption>
-				<checkbox id="wheelgesture" label="&wheelGesture;"
-				          preference="pref:wheelgesture"
-				          onsyncfrompreference="PrefsUI.updateUIGroup('wheelgesture');" />
-			</caption>
-			<grid>
-				<columns>
-					<column />
-					<column />
-				</columns>
-				<rows>
-					<row align="center">
-						<label id="wheelUpLabel"
-						       value0="&wheelGesture.up.left;:"
-						       value1="&wheelGesture.up.middle;:"
-						       value2="&wheelGesture.up.right;:" />
-						<menulist id="wheelGestureU" sizetopopup="none" oncommand="gShouldCommit = true;">
-							<menupopup />
-						</menulist>
-					</row>
-					<row align="center">
-						<label id="wheelDownLabel"
-						       value0="&wheelGesture.down.left;:"
-						       value1="&wheelGesture.down.middle;:"
-						       value2="&wheelGesture.down.right;:" />
-						<menulist id="wheelGestureD" sizetopopup="none" oncommand="gShouldCommit = true;">
-							<menupopup />
-						</menulist>
-					</row>
-				</rows>
-			</grid>
-		</groupbox>
-		<groupbox uigroup="rockergesture">
-			<caption>
-				<checkbox id="rockergesture" label="&rockerGesture;"
-				          preference="pref:rockergesture"
-				          onsyncfrompreference="PrefsUI.updateUIGroup('rockergesture');" />
-			</caption>
-			<grid>
-				<columns>
-					<column />
-					<column />
-				</columns>
-				<rows>
-					<row align="center">
-						<label value="&rockerGesture.left;:" />
-						<menulist id="rockerGestureL" sizetopopup="none" oncommand="gShouldCommit = true;">
-							<menupopup />
-						</menulist>
-					</row>
-					<row align="center">
-						<label value="&rockerGesture.right;:" />
-						<menulist id="rockerGestureR" sizetopopup="none" oncommand="gShouldCommit = true;">
-							<menupopup />
-						</menulist>
-					</row>
-				</rows>
-			</grid>
-		</groupbox>
-		<groupbox uigroup="keypressgesture">
-			<caption>
-				<checkbox id="keypressgesture" label="&keypressGesture;"
-				          preference="pref:keypressgesture"
-				          onsyncfrompreference="PrefsUI.updateUIGroup('keypressgesture');" />
-			</caption>
-			<grid>
-				<columns>
-					<column />
-					<column />
-				</columns>
-				<rows>
-					<row align="center">
-						<label value="&keypressGesture.ctrl;:" />
-						<menulist id="keypressGestureC" sizetopopup="none"
-						          oncommand="gShouldCommit = true;">
-							<menupopup>
-								<menuitem label="..." />
-								<menuitem label="&keypressGesture.open;" value="FireGestures:OpenHoveredLinks" />
-								<menuitem label="&keypressGesture.save;" value="FireGestures:SaveHoveredLinks" />
-								<menuitem label="&keypressGesture.copy;" value="FireGestures:CopyHoveredLinks" />
-							</menupopup>
-						</menulist>
-					</row>
-					<row align="center">
-						<label value="&keypressGesture.shift;:" />
-						<menulist id="keypressGestureS" sizetopopup="none"
-						          oncommand="gShouldCommit = true;">
-							<menupopup>
-								<menuitem label="..." />
-								<menuitem label="&keypressGesture.open;" value="FireGestures:OpenHoveredLinks" />
-								<menuitem label="&keypressGesture.save;" value="FireGestures:SaveHoveredLinks" />
-								<menuitem label="&keypressGesture.copy;" value="FireGestures:CopyHoveredLinks" />
-							</menupopup>
-						</menulist>
-					</row>
-				</rows>
-			</grid>
-		</groupbox>
-		<groupbox uigroup="tabwheelgesture">
-			<caption>
-				<checkbox id="tabwheelgesture" label="&tabwheelGesture;"
-				          preference="pref:tabwheelgesture"
-				          onsyncfrompreference="PrefsUI.updateUIGroup('tabwheelgesture');" />
-			</caption>
-			<hbox>
-				<label value="&tabwheelGesture.description;" />
-			</hbox>
-		</groupbox>
-		<box hidden="true">
-			<menuitem id="separatorTemplate" disabled="true">
-				<label />
-				<menuseparator flex="1" />
-			</menuitem>
-		</box>
-	</prefpane>
-
-	<prefpane id="swipePane" label="&swipePane;" flex="1">
-		<preferences>
-			<preference id="pref:swipegesture" name="extensions.firegestures.swipegesture"  type="bool" />
-			<preference id="pref:swipetimeout" name="extensions.firegestures.swipe_timeout" type="int" />
-		</preferences>
-		<groupbox uigroup="swipegesture">
-			<caption>
-				<checkbox id="swipegesture" label="&swipe;"
-				          preference="pref:swipegesture"
-				          onsyncfrompreference="PrefsUI.updateSwipeGestureUIGroup();" />
-			</caption>
-			<grid>
-				<columns>
-					<column />
-					<column />
-				</columns>
-				<rows>
-					<row align="center">
-						<label value="&swipe.left;:" />
-						<menulist id="swipeGestureL" sizetopopup="none" oncommand="gShouldCommit = true;">
-							<menupopup />
-						</menulist>
-					</row>
-					<row align="center">
-						<label value="&swipe.right;:" />
-						<menulist id="swipeGestureR" sizetopopup="none" oncommand="gShouldCommit = true;">
-							<menupopup />
-						</menulist>
-					</row>
-					<row align="center">
-						<label value="&swipe.up;:" />
-						<menulist id="swipeGestureU" sizetopopup="none" oncommand="gShouldCommit = true;">
-							<menupopup />
-						</menulist>
-					</row>
-					<row align="center">
-						<label value="&swipe.down;:" />
-						<menulist id="swipeGestureD" sizetopopup="none" oncommand="gShouldCommit = true;">
-							<menupopup />
-						</menulist>
-					</row>
-				</rows>
-			</grid>
-			<separator class="groove" />
-			<checkbox id="swipetimeout" label="&swipe.continuous;"
-			          preference="pref:swipetimeout"
-			          onsyncfrompreference="return PrefsUI.updateSwipeGestureUIGroup();"
-			          onsynctopreference="return this.checked ? 500 : 0;" />
-			<hbox align="center" class="indent" uigroup="swipetimeout">
-				<label value="&swipe.continuous.1;:" />
-				<textbox type="number" min="0" max="2" increment="0.1" decimalplaces="1" size="3"
-				         preference="pref:swipetimeout"
-				         onsyncfrompreference="return getElement('pref:swipetimeout').value / 1000;"
-				         onsynctopreference="return this.value * 1000;" />
-				<label value="&swipe.continuous.2;" />
-			</hbox>
-		</groupbox>
-	</prefpane>
-
-	<script type="application/x-javascript" src="chrome://firegestures/content/prefs.js" />
-
-	<stringbundle id="bundleMain" src="chrome://firegestures/locale/firegestures.properties" />
-
-</prefwindow>
+<?xml version="1.0"?>
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://firegestures/skin/prefs.css" type="text/css"?>
+
+<!DOCTYPE prefwindow SYSTEM "chrome://firegestures/locale/prefs.dtd">
+
+<prefwindow id="PrefsUI"
+            xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+            windowtype="FireGestures:Options"
+            title="FireGestures - &options;"
+            onload="PrefsUI.init();"
+            ondialogcancel="if (!document.documentElement.instantApply) gShouldCommit = false;"
+            onunload="PrefsUI.done();">
+
+	<prefpane id="mainPane" label="&mainPane;" flex="1">
+		<preferences>
+			<preference id="pref:mousegesture"  name="extensions.firegestures.mousegesture"     type="bool" />
+			<preference id="pref:triggerbutton" name="extensions.firegestures.trigger_button"   type="int" />
+			<preference id="pref:suppressalt"   name="extensions.firegestures.suppress.alt"     type="bool" />
+			<preference id="pref:trail"         name="extensions.firegestures.mousetrail"       type="bool" />
+			<preference id="pref:trailsize"     name="extensions.firegestures.mousetrail.size"  type="int" />
+			<preference id="pref:trailcolor"    name="extensions.firegestures.mousetrail.color" type="string" />
+			<preference id="pref:status"        name="extensions.firegestures.status_display"   type="int" />
+			<preference id="pref:timeout"       name="extensions.firegestures.gesture_timeout"  type="int" />
+		</preferences>
+		<groupbox uigroup="mousegesture">
+			<caption>
+				<checkbox id="mousegesture" label="&mouseGesture;"
+				          preference="pref:mousegesture"
+				          onsyncfrompreference="PrefsUI.updateMouseGestureUIGroup();" />
+			</caption>
+			<hbox align="center">
+				<label value="&triggerButton;:" />
+				<radiogroup orient="horizontal"
+				            preference="pref:triggerbutton"
+				            onsyncfrompreference="PrefsUI.updateTriggerButton();">
+					<radio value="0" label="&triggerButton.left;" />
+					<radio value="1" label="&triggerButton.middle;" />
+					<radio value="2" label="&triggerButton.right;" />
+				</radiogroup>
+			</hbox>
+			<checkbox label="&suppress.alt;" class="indent"
+			          preference="pref:suppressalt" />
+			<checkbox id="trail" label="&trail;"
+			          preference="pref:trail"
+			          onsyncfrompreference="PrefsUI.updateMouseGestureUIGroup();" />
+			<hbox align="center" class="indent" uigroup="trail">
+				<label value="&trail.color;:" />
+				<colorpicker id="trailColor" type="button"
+				             preference="pref:trailcolor"
+				             onchange="PrefsUI.updateTrail();" />
+				<spacer width="20" />
+				<label value="&trail.size;:" />
+				<hbox id="trailSampleOuter"><hbox id="trailSample" /></hbox>
+				<spinbuttons id="trailButtons"
+				             onup="PrefsUI.changeTrailSize(+1);"
+				             ondown="PrefsUI.changeTrailSize(-1);" />
+			</hbox>
+			<checkbox id="status" label="&status;"
+			          preference="pref:status"
+			          onsyncfrompreference="return PrefsUI.updateMouseGestureUIGroup();"
+			          onsynctopreference="return this.checked ? getElement('pref:status').defaultValue : 0;" />
+			<hbox align="center" class="indent" uigroup="status">
+				<label value="&status.description.1;" />
+				<textbox type="number" min="0" max="10" increment="0.1" decimalplaces="1" size="3"
+				         preference="pref:status"
+				         onsyncfrompreference="return getElement('pref:status').value / 1000;"
+				         onsynctopreference="return this.value * 1000;" />
+				<label value="&status.description.2;" />
+			</hbox>
+			<checkbox id="timeout" label="&timeout;"
+			          preference="pref:timeout"
+			          onsyncfrompreference="return PrefsUI.updateMouseGestureUIGroup();"
+			          onsynctopreference="return this.checked ? getElement('pref:timeout').defaultValue : 0;" />
+			<hbox align="center" class="indent" uigroup="timeout">
+				<label value="&timeout.description.1;" />
+				<textbox type="number" min="0" max="10" increment="0.1" decimalplaces="1" size="3"
+				         preference="pref:timeout"
+				         onsyncfrompreference="return getElement('pref:timeout').value / 1000;"
+				         onsynctopreference="return this.value * 1000;" />
+				<label value="&timeout.description.2;" />
+			</hbox>
+		</groupbox>
+		<groupbox>
+			<caption label="&mappings.title;" />
+			<hbox align="center">
+				<label value="&mappings.description;" />
+				<spacer flex="1" />
+				<button type="menu" label="&mappings.title;">
+					<menupopup onpopupshowing="PrefsUI.generateMappingsMenu(event);"
+					           oncommand="PrefsUI._gestureSvc.getMapping(event.target.id).configure();" />
+				</button>
+			</hbox>
+		</groupbox>
+		<groupbox>
+			<caption label="&tools.title;" />
+			<hbox align="center">
+				<label value="&tools.description;" />
+				<spacer flex="1" />
+				<button type="menu" label="&tools.title;">
+					<menupopup>
+						<menuitem label="&tools.backup.label;..." title="&tools.backup.label;"
+						          oncommand="PrefsUI.backupMappings(this);" />
+						<menuitem label="&tools.restore.label;..." title="&tools.restore.label;"
+						          alerttext="&tools.restore.alerttext;"
+						          oncommand="PrefsUI.restoreMappings(this);" />
+					</menupopup>
+				</button>
+			</hbox>
+		</groupbox>
+	</prefpane>
+
+	<prefpane id="mappingPane" label="&mappingPane;" flex="1">
+		<commandset id="mappingCommandSet" oncommand="PrefsUI.doCommand(event.target.id);">
+			<command id="cmd_edit_gesture" />
+			<command id="cmd_clear_gesture" />
+			<command id="cmd_add_script" />
+			<command id="cmd_delete_script" />
+		</commandset>
+		<tree id="mappingTree"
+		      onselect="PrefsUI.updateCommands();"
+		      ondblclick="PrefsUI.handleTreeEvent(event);"
+		      onkeypress="PrefsUI.handleTreeEvent(event);"
+		      rows="16" flex="1">
+			<treecols>
+				<treecol label="&treecol.name;" flex="5" primary="true" />
+				<splitter class="tree-splitter" />
+				<treecol label="&treecol.command;" flex="3" hidden="true" />
+				<splitter class="tree-splitter" />
+				<treecol label="&treecol.gesture;" flex="1" />
+			</treecols>
+			<treechildren flex="1"
+			              ondragstart="PrefsUI.handleTreeEvent(event);"
+			              ondragenter="PrefsUI.handleTreeEvent(event);"
+			              ondragover="PrefsUI.handleTreeEvent(event);"
+			              ondrop="PrefsUI.handleTreeEvent(event);" />
+		</tree>
+		<hbox id="mappingButtons" align="start">
+			<button label="&editButton.label;..."
+			        accesskey="&editButton.accesskey;"
+			        command="cmd_edit_gesture" />
+			<button label="&clearButton.label;"
+			        accesskey="&clearButton.accesskey;"
+			        command="cmd_clear_gesture" />
+			<button label="&addScriptButton.label;..."
+			        accesskey="&addScriptButton.accesskey;"
+			        command="cmd_add_script" />
+			<button label="&deleteScriptButton.label;"
+			        accesskey="&deleteScriptButton.accesskey;"
+			        command="cmd_delete_script" />
+		</hbox>
+		<label id="getScripts" value="&getScripts.label;" class="text-link" style="margin-bottom: 10px;"
+			   onclick="PrefsUI.openURL('http://www.xuldev.org/firegestures/getscripts.php');" />
+	</prefpane>
+
+	<prefpane id="advancedPane" label="&advancedPane;" flex="1">
+		<preferences>
+			<preference id="pref:wheelgesture"    name="extensions.firegestures.wheelgesture"    type="bool" />
+			<preference id="pref:rockergesture"   name="extensions.firegestures.rockergesture"   type="bool" />
+			<preference id="pref:keypressgesture" name="extensions.firegestures.keypressgesture" type="bool" />
+			<preference id="pref:tabwheelgesture" name="extensions.firegestures.tabwheelgesture" type="bool" />
+		</preferences>
+		<groupbox uigroup="wheelgesture">
+			<caption>
+				<checkbox id="wheelgesture" label="&wheelGesture;"
+				          preference="pref:wheelgesture"
+				          onsyncfrompreference="PrefsUI.updateUIGroup('wheelgesture');" />
+			</caption>
+			<grid>
+				<columns>
+					<column />
+					<column />
+				</columns>
+				<rows>
+					<row align="center">
+						<label id="wheelUpLabel"
+						       value0="&wheelGesture.up.left;:"
+						       value1="&wheelGesture.up.middle;:"
+						       value2="&wheelGesture.up.right;:" />
+						<menulist id="wheelGestureU" sizetopopup="none" oncommand="gShouldCommit = true;">
+							<menupopup />
+						</menulist>
+					</row>
+					<row align="center">
+						<label id="wheelDownLabel"
+						       value0="&wheelGesture.down.left;:"
+						       value1="&wheelGesture.down.middle;:"
+						       value2="&wheelGesture.down.right;:" />
+						<menulist id="wheelGestureD" sizetopopup="none" oncommand="gShouldCommit = true;">
+							<menupopup />
+						</menulist>
+					</row>
+				</rows>
+			</grid>
+		</groupbox>
+		<groupbox uigroup="rockergesture">
+			<caption>
+				<checkbox id="rockergesture" label="&rockerGesture;"
+				          preference="pref:rockergesture"
+				          onsyncfrompreference="PrefsUI.updateUIGroup('rockergesture');" />
+			</caption>
+			<grid>
+				<columns>
+					<column />
+					<column />
+				</columns>
+				<rows>
+					<row align="center">
+						<label value="&rockerGesture.left;:" />
+						<menulist id="rockerGestureL" sizetopopup="none" oncommand="gShouldCommit = true;">
+							<menupopup />
+						</menulist>
+					</row>
+					<row align="center">
+						<label value="&rockerGesture.right;:" />
+						<menulist id="rockerGestureR" sizetopopup="none" oncommand="gShouldCommit = true;">
+							<menupopup />
+						</menulist>
+					</row>
+				</rows>
+			</grid>
+		</groupbox>
+		<groupbox uigroup="keypressgesture">
+			<caption>
+				<checkbox id="keypressgesture" label="&keypressGesture;"
+				          preference="pref:keypressgesture"
+				          onsyncfrompreference="PrefsUI.updateUIGroup('keypressgesture');" />
+			</caption>
+			<grid>
+				<columns>
+					<column />
+					<column />
+				</columns>
+				<rows>
+					<row align="center">
+						<label value="&keypressGesture.ctrl;:" />
+						<menulist id="keypressGestureC" sizetopopup="none"
+						          oncommand="gShouldCommit = true;">
+							<menupopup>
+								<menuitem label="..." />
+								<menuitem label="&keypressGesture.open;" value="FireGestures:OpenHoveredLinks" />
+								<menuitem label="&keypressGesture.save;" value="FireGestures:SaveHoveredLinks" />
+								<menuitem label="&keypressGesture.copy;" value="FireGestures:CopyHoveredLinks" />
+							</menupopup>
+						</menulist>
+					</row>
+					<row align="center">
+						<label value="&keypressGesture.shift;:" />
+						<menulist id="keypressGestureS" sizetopopup="none"
+						          oncommand="gShouldCommit = true;">
+							<menupopup>
+								<menuitem label="..." />
+								<menuitem label="&keypressGesture.open;" value="FireGestures:OpenHoveredLinks" />
+								<menuitem label="&keypressGesture.save;" value="FireGestures:SaveHoveredLinks" />
+								<menuitem label="&keypressGesture.copy;" value="FireGestures:CopyHoveredLinks" />
+							</menupopup>
+						</menulist>
+					</row>
+				</rows>
+			</grid>
+		</groupbox>
+		<groupbox uigroup="tabwheelgesture">
+			<caption>
+				<checkbox id="tabwheelgesture" label="&tabwheelGesture;"
+				          preference="pref:tabwheelgesture"
+				          onsyncfrompreference="PrefsUI.updateUIGroup('tabwheelgesture');" />
+			</caption>
+			<hbox>
+				<label value="&tabwheelGesture.description;" />
+			</hbox>
+		</groupbox>
+		<box hidden="true">
+			<menuitem id="separatorTemplate" disabled="true">
+				<label />
+				<menuseparator flex="1" />
+			</menuitem>
+		</box>
+	</prefpane>
+
+	<prefpane id="swipePane" label="&swipePane;" flex="1">
+		<preferences>
+			<preference id="pref:swipegesture" name="extensions.firegestures.swipegesture"  type="bool" />
+			<preference id="pref:swipetimeout" name="extensions.firegestures.swipe_timeout" type="int" />
+		</preferences>
+		<groupbox uigroup="swipegesture">
+			<caption>
+				<checkbox id="swipegesture" label="&swipe;"
+				          preference="pref:swipegesture"
+				          onsyncfrompreference="PrefsUI.updateSwipeGestureUIGroup();" />
+			</caption>
+			<grid>
+				<columns>
+					<column />
+					<column />
+				</columns>
+				<rows>
+					<row align="center">
+						<label value="&swipe.left;:" />
+						<menulist id="swipeGestureL" sizetopopup="none" oncommand="gShouldCommit = true;">
+							<menupopup />
+						</menulist>
+					</row>
+					<row align="center">
+						<label value="&swipe.right;:" />
+						<menulist id="swipeGestureR" sizetopopup="none" oncommand="gShouldCommit = true;">
+							<menupopup />
+						</menulist>
+					</row>
+					<row align="center">
+						<label value="&swipe.up;:" />
+						<menulist id="swipeGestureU" sizetopopup="none" oncommand="gShouldCommit = true;">
+							<menupopup />
+						</menulist>
+					</row>
+					<row align="center">
+						<label value="&swipe.down;:" />
+						<menulist id="swipeGestureD" sizetopopup="none" oncommand="gShouldCommit = true;">
+							<menupopup />
+						</menulist>
+					</row>
+				</rows>
+			</grid>
+			<separator class="groove" />
+			<checkbox id="swipetimeout" label="&swipe.continuous;"
+			          preference="pref:swipetimeout"
+			          onsyncfrompreference="return PrefsUI.updateSwipeGestureUIGroup();"
+			          onsynctopreference="return this.checked ? 500 : 0;" />
+			<hbox align="center" class="indent" uigroup="swipetimeout">
+				<label value="&swipe.continuous.1;:" />
+				<textbox type="number" min="0" max="2" increment="0.1" decimalplaces="1" size="3"
+				         preference="pref:swipetimeout"
+				         onsyncfrompreference="return getElement('pref:swipetimeout').value / 1000;"
+				         onsynctopreference="return this.value * 1000;" />
+				<label value="&swipe.continuous.2;" />
+			</hbox>
+		</groupbox>
+	</prefpane>
+
+	<script type="application/x-javascript" src="chrome://firegestures/content/prefs.js" />
+
+	<stringbundle id="bundleMain" src="chrome://firegestures/locale/firegestures.properties" />
+
+</prefwindow>
diff --git a/install.rdf b/install.rdf
index efc370b..78a6d18 100644
--- a/install.rdf
+++ b/install.rdf
@@ -7,7 +7,7 @@
 		<em:id>firegestures at xuldev.org</em:id>
 		<em:type>2</em:type>
 		<em:name>FireGestures</em:name>
-		<em:version>1.8.3b1</em:version>
+		<em:version>1.8.4</em:version>
 		<em:description>Executes various commands with mouse gestures.</em:description>
 		<em:creator>Gomita</em:creator>
 		<em:localized>
@@ -278,7 +278,7 @@
 			<Description>
 				<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
 				<em:minVersion>24.0</em:minVersion>
-				<em:maxVersion>29.0a1</em:maxVersion>
+				<em:maxVersion>30.0a1</em:maxVersion>
 			</Description>
 		</em:targetApplication>
 	</Description>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firegestures.git



More information about the Pkg-mozext-commits mailing list