summaryrefslogtreecommitdiff
path: root/browser/components/downloads/content/allDownloadsViewOverlay.css
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/downloads/content/allDownloadsViewOverlay.css')
-rw-r--r--browser/components/downloads/content/allDownloadsViewOverlay.css56
1 files changed, 56 insertions, 0 deletions
diff --git a/browser/components/downloads/content/allDownloadsViewOverlay.css b/browser/components/downloads/content/allDownloadsViewOverlay.css
new file mode 100644
index 000000000..c062ae464
--- /dev/null
+++ b/browser/components/downloads/content/allDownloadsViewOverlay.css
@@ -0,0 +1,56 @@
+/* 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/. */
+
+/**
+ * The downloads richlistbox may list thousands of items, and it turns out
+ * XBL binding attachment, and even more so detachment, is a performance hog.
+ * This hack makes sure we don't apply any binding to inactive items (inactive
+ * items are history downloads that haven't been in the visible area).
+ * We can do this because the richlistbox implementation does not interact
+ * much with the richlistitem binding. However, this may turn out to have
+ * some side effects (see bug 828111 for the details).
+ *
+ * We might be able to do away with this workaround once bug 653881 is fixed.
+ */
+richlistitem.download {
+ -moz-binding: none;
+}
+
+richlistitem.download[active] {
+ -moz-binding: url('chrome://browser/content/downloads/download.xml#download-full-ui');
+}
+
+richlistitem.download[active]:-moz-any([state="-1"],/* Starting (initial) */
+ [state="0"], /* Downloading */
+ [state="4"], /* Paused */
+ [state="5"], /* Starting (queued) */
+ [state="7"]) /* Scanning */
+{
+ -moz-binding: url('chrome://browser/content/downloads/download.xml#download-in-progress-full-ui');
+}
+
+.download-state:not( [state="0"] /* Downloading */)
+ .downloadPauseMenuItem,
+.download-state:not( [state="4"] /* Paused */)
+ .downloadResumeMenuItem,
+.download-state:not(:-moz-any([state="2"], /* Failed */
+ [state="4"]) /* Paused */)
+ .downloadCancelMenuItem,
+.download-state[state]:not(:-moz-any([state="1"], /* Finished */
+ [state="2"], /* Failed */
+ [state="3"], /* Canceled */
+ [state="6"], /* Blocked (parental) */
+ [state="8"], /* Blocked (dirty) */
+ [state="9"]) /* Blocked (policy) */)
+ .downloadRemoveFromHistoryMenuItem,
+.download-state:not(:-moz-any([state="-1"],/* Starting (initial) */
+ [state="0"], /* Downloading */
+ [state="1"], /* Finished */
+ [state="4"], /* Paused */
+ [state="5"]) /* Starting (queued) */)
+ .downloadShowMenuItem,
+.download-state[state="7"] /* Scanning */ .downloadCommandsSeparator
+{
+ display: none;
+}