/* 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; }