[tbb-commits] [torbutton/master] Bug 11472: about:tor logo and text may overlap.
mikeperry at torproject.org
mikeperry at torproject.org
Fri Jul 25 04:59:22 UTC 2014
commit 0fb285c3ca6b2196406084a50b11c641f2b8406e
Author: Kathy Brade <brade at pearlcrescent.com>
Date: Wed Jul 16 10:33:52 2014 -0400
Bug 11472: about:tor logo and text may overlap.
This problem occurred in some non-English locales (e.g., de).
We now reduce the font size of some elements if necessary.
---
src/chrome/content/aboutTor/aboutTor.xhtml | 9 ++++--
src/chrome/content/torbutton.js | 43 ++++++++++++++++++++++++++++
src/chrome/skin/aboutTor.css | 2 ++
3 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/src/chrome/content/aboutTor/aboutTor.xhtml b/src/chrome/content/aboutTor/aboutTor.xhtml
index b99bc7e..f8f829d 100644
--- a/src/chrome/content/aboutTor/aboutTor.xhtml
+++ b/src/chrome/content/aboutTor/aboutTor.xhtml
@@ -132,15 +132,20 @@ function insertPropertyStrings()
<div id="torstatus" class="top">
<div id="torstatus-version"/>
<div id="torstatus-image"/>
- <div class="hideIfTorOff">
+ <div id="torstatus-on-container" class="hideIfTorOff torstatus-container">
<h1>&aboutTor.success.label;</h1>
+ <br/>
<h2 id="success2">&aboutTor.success2.label;</h2>
+ <br/>
<h3 class="hideIfTBBNeedsUpdate">&aboutTor.success3.label;</h3>
+ <br/>
<a id="testTorSettings" href="about:blank">&aboutTor.check.label;</a>
</div>
- <div class="hideIfTorOn">
+ <div id="torstatus-off-container" class="hideIfTorOn torstatus-container">
<h1>&aboutTor.failure.label;</h1>
+ <br/>
<h2>&aboutTor.failure2.label;</h2>
+ <br/>
<h3>&aboutTor.failure3prefix.label;<a href="mailto:&aboutTor.failure3Link;"
>&aboutTor.failure3Link;</a>&aboutTor.failure3suffix.label;</h3>
</div>
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 3e7cf62..f682f05 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -875,12 +875,55 @@ function torbutton_update_abouttor_doc(aDoc, aTorOn, aUpdateNeeded) {
e.appendChild(aDoc.createTextNode(productName + '\n' + tbbVersion));
} catch (e) {}
+ let containerName = "torstatus-" + (aTorOn ? "on" : "off") + "-container";
+ torbutton_adjust_abouttor_fontsizes(aDoc, containerName);
torbutton_update_abouttor_arrow(aDoc);
}
return isAboutTor;
}
+// Ensure that text in top area does not overlap the tor on/off (onion) image.
+// This is done by reducing the font sizes as necessary.
+function torbutton_adjust_abouttor_fontsizes(aDoc, aContainerName)
+{
+ let imgElem = aDoc.getElementById("torstatus-image");
+ let containerElem = aDoc.getElementById(aContainerName);
+ if (!imgElem || !containerElem)
+ return;
+
+ try
+ {
+ let imgRect = imgElem.getBoundingClientRect();
+
+ for (let textElem = containerElem.firstChild; textElem;
+ textElem = textElem.nextSibling)
+ {
+ if ((textElem.nodeType != textElem.ELEMENT_NODE) ||
+ (textElem.nodeName.toLowerCase() == "br"))
+ {
+ continue;
+ }
+
+ let textRect = textElem.getBoundingClientRect();
+ if (0 == textRect.width)
+ continue;
+
+ // Reduce font to 90% of previous size, repeating the process up to 7
+ // times. This allows for a maximum reduction to just less than 50% of
+ // the original size.
+ let maxTries = 7;
+ while ((textRect.left < imgRect.right) && (--maxTries >= 0))
+ {
+ let style = aDoc.defaultView.getComputedStyle(textElem, null);
+ let fontSize = parseFloat(style.getPropertyValue("font-size"));
+ textElem.style.fontSize = (fontSize * 0.9) + "px";
+ textRect = textElem.getBoundingClientRect();
+ }
+ }
+ } catch (e) {}
+}
+
// Determine X position of torbutton toolbar item and pass it through
// to the xhtml document.
function torbutton_update_abouttor_arrow(aDoc) {
diff --git a/src/chrome/skin/aboutTor.css b/src/chrome/skin/aboutTor.css
index 192e345..0c12374 100644
--- a/src/chrome/skin/aboutTor.css
+++ b/src/chrome/skin/aboutTor.css
@@ -135,6 +135,8 @@ body .top div.hideIfTorIsUpToDate h1.hideIfTorOff {
margin-left: 30px;
}
+/* Use inline-block for text-oriented elements whose widths need to measured. */
+.torstatus-container *,
.top div.hideIfTorIsUpToDate h3 {
display: inline-block;
}
More information about the tbb-commits
mailing list