Index: chrome/content/ui/progressBar.js |
=================================================================== |
--- a/chrome/content/ui/progressBar.js |
+++ b/chrome/content/ui/progressBar.js |
@@ -1,17 +1,17 @@ |
/* |
* This Source Code is subject to the terms of the Mozilla Public License |
* version 2.0 (the "License"). You can obtain a copy of the License at |
* http://mozilla.org/MPL/2.0/. |
*/ |
(function() |
{ |
- let progressBar, canvas, headers; |
+ let progressBar, canvas, headers, isRTL; |
function onLoad() |
{ |
window.removeEventListener("load", onLoad, false); |
// Init global variables |
progressBar = document.getElementById("progressBar"); |
canvas = document.getElementById("progressBarCanvas"); |
@@ -21,16 +21,18 @@ |
canvas.parentNode.appendChild(headers[i]); |
// Expose properties |
progressBar.__defineGetter__("activeItem", getActiveItem); |
progressBar.__defineSetter__("activeItem", setActiveItem); |
progressBar.__defineGetter__("activeItemComplete", getActiveItemComplete); |
progressBar.__defineSetter__("activeItemComplete", setActiveItemComplete); |
+ isRTL = (window.getComputedStyle(document.documentElement).direction == "rtl"); |
+ |
// Run actual drawing delayed, once the sizes are fixed |
window.setTimeout(init, 0); |
}; |
window.addEventListener("load", onLoad, false); |
function init() |
{ |
const gapWidth = 5; |
@@ -38,16 +40,21 @@ |
let width = canvas.width = canvas.offsetWidth; |
let height = canvas.height = canvas.offsetHeight; |
let context = canvas.getContext("2d"); |
context.fillStyle = window.getComputedStyle(progressBar, "").color; |
context.strokeStyle = window.getComputedStyle(progressBar, "").color; |
context.lineWidth = 1; |
+ if(isRTL) |
Wladimir Palant
2012/09/14 21:20:40
Style nit: please insert a space between "if" and
|
+ { |
+ context.translate(width, 0); |
+ context.scale(-1, 1); |
+ } |
let panelCount = headers.length; |
let panelWidth = (width - gapWidth * (panelCount - 1) - 1) / panelCount; |
for (let i = 0; i < panelCount; i++) |
{ |
context.save(); |
context.translate(Math.round(i * (panelWidth + gapWidth)) + 0.5, 0.5); |
context.beginPath(); |
@@ -64,16 +71,17 @@ |
context.lineTo(0, (height - 1) / 2); |
context.lineTo(-arrowheadWidth, 0); |
} |
else |
{ |
context.lineTo(0, height - 1); |
context.lineTo(0, 0); |
} |
+ |
context.stroke(); |
context.restore(); |
let childLeft = Math.round(i * (panelWidth + gapWidth) + 1); |
let childWidth = panelWidth - arrowheadWidth - 2; |
let child = headers[i]; |
child.style.marginLeft = childLeft + "px"; |
child.style.marginRight = (width - childLeft - childWidth) + "px"; |
@@ -95,17 +103,17 @@ |
return null; |
} |
function setActiveItem(val) |
{ |
let complete = true; |
for (let i = 0; i < headers.length; i++) |
{ |
- let header = headers[i]; |
+ let header = headers[(isRTL) ? headers.length-i-1 : i]; |
Wladimir Palant
2012/09/14 21:20:40
Style nit: please a space before and after a binar
|
if (header == val) |
complete = false; |
if (!complete && header.value[0] == "✔") |
header.value = header.value.replace(/^✔\s*/, ""); |
else if (complete && header.value[0] != "✔") |
header.value = "✔ " + header.value; |