| 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; |