/* 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/. */ /* === BEGIN downloads.inc.css === */ /* In the original, this is at the end of the file as a preprocessor-include */ @import url("progressmeter.inc.css"); /*** Panel and outer controls ***/ #downloadsPanel > .panel-arrowcontainer > .panel-arrowcontent { overflow: hidden; display: block; } #downloadsPanel > .panel-arrowcontainer > .panel-arrowcontent, #downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack > .panel-subviews { padding: 0; } #downloadsListBox { background-color: transparent; color: inherit; margin: 0; } #emptyDownloads { padding: 16px 25px; margin: 0; /* The panel can be wider than this description after the blocked subview is shown, so center the text. */ text-align: center; } .downloadsPanelFooter { /* background-color: var(--arrowpanel-dimmed); border-top: 1px solid var(--panel-separator-color);*/ } .downloadsPanelFooter toolbarseparator, richlistitem[type="download"] > toolbarseparator { margin: 0; border: 0; min-width: 0; /* border-left: 1px solid var(--panel-separator-color); -moz-appearance: none;*/ } .downloadsPanelFooterButton { margin: 0; padding: 0; min-width: 0; /* min-height: 40px;*/ border: none; } .downloadsPanelFooterButton:hover { } .downloadsPanelFooterButton:hover:active, .downloadsPanelFooterButton[open="true"] { } .downloadsPanelFooterButton[default] { } .downloadsPanelFooterButton[default]:hover { } .downloadsPanelFooterButton[default]:hover:active { } .downloadsPanelFooterButton > .button-box { padding: 0; margin: 0; border: none; } #downloadsHistory { padding-inline-start: 10px; padding-inline-end: 10px; } #downloadsPanel[hasdownloads] #downloadsFooterButtons:not(.downloadsHideDropmarker) > #downloadsHistory { padding-inline-start: 68px; } toolbarseparator.downloadsDropmarkerSplitter { margin: 7px 0; } richlistitem[type="download"] > toolbarseparator { margin: 10px 0; } richlistitem[type="download"]:hover > toolbarseparator, #downloadsFooter:hover toolbarseparator.downloadsDropmarkerSplitter, #downloadsFooter[showingdropdown] toolbarseparator { margin: 0; } .downloadsDropmarker { padding: 0 21px; } .downloadsDropmarker > .button-box > hbox { display: none; } .downloadsDropmarker > .button-box > .button-menu-dropmarker { display: -moz-box; padding: 0; margin: 0; } .downloadsDropmarker > .button-box > .button-menu-dropmarker > .dropmarker-icon { width: 16px; height: 16px; /* list-style-image: url("chrome://browser/skin/downloads/menubutton-dropmarker.svg"); filter: url("chrome://global/skin/filters.svg#fill"); fill: currentColor;*/ } /* Override default icon size which is too small for this dropdown */ .downloadsDropmarker > .button-box > .button-menu-dropmarker { width: 16px; height: 16px; } #downloadsSummary { -moz-user-focus: normal; } #downloadsSummary > .downloadTypeIcon { list-style-image: url("chrome://browser/skin/downloads/download-summary.svg"); } #downloadsSummaryDescription { color: #3333FF; } /*** List items and similar elements in the summary ***/ #downloadsSummary, richlistitem[type="download"] { height: var(--downloads-item-height); } richlistitem[type="download"] { border-bottom: 1px solid var(--panel-separator-color); background: transparent; color: inherit; } richlistitem[type="download"]:last-child { border-bottom: none; } .downloadTypeIcon { margin: 8px 13px; width: 32px; height: 32px; } .downloadBlockedBadge { margin: 0 5px; background: url("chrome://browser/skin/downloads/download-blocked.svg") top right / 16px no-repeat; } downloadBlockedBadge:-moz-locale-dir(rtl) { background-position-x: left; } richlistitem[type="download"][verdict="PotentiallyUnwanted"] .downloadBlockedBadge { background-image: url("chrome://browser/skin/warning.svg"); } richlistitem[type="download"][verdict="Uncommon"] .downloadBlockedBadge { background-image: url("chrome://browser/skin/info.svg"); } /* We hold .downloadTarget, .downloadProgress and .downloadDetails inside of a vbox with class .downloadContainer. We set the font-size of the entire container to --downloads-item-font-size-factor because: 1) This is the size that we want .downloadDetails to be 2) The container's width is set by localizers by &downloadDetails.width;, which is a ch unit. Since this is the value that should control the panel width, we apply it to the outer container to constrain .downloadTarget and .downloadProgress. Finally, since we want .downloadTarget's font-size to be at 100% of the font-size of .downloadContainer's parent, we use calc to go from the smaller font-size back to the original font-size. */ .downloadContainer { font-size: calc(100% * var(--downloads-item-font-size-factor)); margin-inline-end: 13px; } #downloadsSummaryDescription, .downloadTarget { margin: 0; font-size: calc(100% / var(--downloads-item-font-size-factor)); } #downloadsSummaryDetails, .downloadDetails { opacity: var(--downloads-item-details-opacity); /* Use calc() to keep the height consistent with .downloadTarget, so that the progress bar can be vertically centered. */ margin: 4px 0 calc(1em / var(--downloads-item-font-size-factor) - 1em); } /* The following rules control which message is shown under the name of the download, using a set of elements that share the class ".downloadDetails". At any given time, only one of these elements is displayed. We use a set of rules to hide the elements that shouldn't be displayed in each case. */ /* The full status message is only displayed in the Downloads View. */ .downloadDetailsFull { display: none; } /* When hovering the mouse pointer over the item, instead of the normal message we display a more detailed one. */ richlistitem[type="download"]:hover > .downloadMainArea > .downloadContainer > .downloadDetailsNormal, richlistitem[type="download"]:not(:hover) > .downloadMainArea > .downloadContainer > .downloadDetailsHover { display: none; } /* When hovering the action button in particular, instead of the usual hover message we display the command associated with the button. */ richlistitem[type="download"].downloadHoveringButton > .downloadMainArea > .downloadContainer > .downloadDetailsHover, richlistitem[type="download"]:not(.downloadHoveringButton) > .downloadMainArea > .downloadContainer > .downloadButtonLabels { display: none; } /* When hovering the main area of a finished download whose target exists, instead of the usual hover message we display the "Open File" command. */ richlistitem[type="download"][state="1"][exists] > .downloadMainArea:hover > .downloadContainer > .downloadDetailsHover, richlistitem[type="download"]:not([state="1"]) > .downloadMainArea > .downloadContainer > .downloadOpenFile, richlistitem[type="download"]:not([exists]) > .downloadMainArea > .downloadContainer > .downloadOpenFile, .downloadMainArea:not(:hover) > .downloadContainer > .downloadOpenFile { display: none; } /* When hovering items blocked by Application Reputation, instead of the other hover messages we display the "Show more information" label. */ richlistitem[type="download"][verdict] > .downloadMainArea > .downloadContainer > .downloadDetailsHover, richlistitem[type="download"][verdict] > .downloadMainArea > .downloadContainer > .downloadButtonLabels, richlistitem[type="download"]:not([verdict]) > .downloadMainArea > .downloadContainer > .downloadShowMoreInfo, richlistitem[type="download"]:not(:hover) > .downloadMainArea > .downloadContainer > .downloadShowMoreInfo { display: none; } richlistitem[type="download"][verdict] > toolbarseparator { visibility: hidden; } .downloadButton { min-width: 58px; margin: 0; /* border: none; */ background: transparent; padding: 0; color: inherit; } .downloadButton > .button-box > .button-icon { width: 16px; height: 16px; margin: 1px; filter: url("chrome://global/skin/filters.svg#fill"); fill: currentColor; } .downloadButton > .button-box > .button-text { margin: 0 !important; padding: 0; } richlistitem[type="download"][state="1"][exists] .downloadMainArea:hover, richlistitem[type="download"]:not([verdict]) > .downloadButtonArea:hover, richlistitem[type="download"][verdict]:hover { background-color: var(--arrowpanel-dimmed); } richlistitem[type="download"][state="1"][exists] > .downloadMainArea:hover:active, richlistitem[type="download"]:not([verdict]) > .downloadButtonArea:hover:active, richlistitem[type="download"][verdict]:hover:active { background-color: var(--arrowpanel-dimmed-further); } richlistitem[type="download"][showingsubview] { background-color: #794900; color: #FFCF00; transition: background-color var(--panelui-subview-transition-duration), color var(--panelui-subview-transition-duration); } richlistitem[type="download"][verdict="Malware"]:hover, richlistitem[type="download"][verdict="Malware"]:hover:active, richlistitem[type="download"][verdict="Malware"][showingsubview] { background-color: #FF0000; color: #000000; } /*** Button icons ***/ .downloadIconCancel > .button-box > .button-icon { list-style-image: url("chrome://browser/skin/panel-icons.svg#cancel"); } .downloadIconShow > .button-box > .button-icon { list-style-image: url("chrome://browser/skin/panel-icons.svg#folder"); } .downloadIconRetry > .button-box > .button-icon { list-style-image: url("chrome://browser/skin/panel-icons.svg#retry"); } .downloadShowBlockedInfo > .button-box > .button-icon { list-style-image: url("chrome://browser/skin/panel-icons.svg#arrow-right"); } .downloadShowBlockedInfo > .button-box > .button-icon:-moz-locale-dir(rtl) { list-style-image: url("chrome://browser/skin/panel-icons.svg#arrow-left"); } /*** Blocked subview ***/ #downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype=main] > .panel-subviews { /* When the main view is showing, the shadow on the left edge of the subview is barely visible on the right edge of the main view, so set it to none. */ box-shadow: none; } /* When the subview is showing, turn the download button into an arrow pointing back to the main view. */ #downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] .downloadButton { color: #FFCF00; } #downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] .downloadButton > .button-box > .button-icon { list-style-image: url("chrome://browser/skin/panel-icons.svg#arrow-left"); } #downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] .downloadButton > .button-box > .button-icon:-moz-locale-dir(rtl) { list-style-image: url("chrome://browser/skin/panel-icons.svg#arrow-right"); } #downloadsPanel-blockedSubview { background-image: url("chrome://browser/skin/warning.svg"); background-size: 32px 32px; background-position: 16px 16px; background-repeat: no-repeat; } #downloadsPanel-blockedSubview:-moz-locale-dir(rtl) { background-position: calc(100% - 16px) 16px; } #downloadsPanel-blockedSubview[verdict=Malware] { background-image: url("chrome://browser/skin/downloads/download-blocked.svg"); } #downloadsPanel-blockedSubview-title { margin-top: 16px; margin-bottom: 16px; font-size: calc(100% / var(--downloads-item-font-size-factor)); } #downloadsPanel-blockedSubview-details1, #downloadsPanel-blockedSubview-details2 { font-size: calc(100% * var(--downloads-item-font-size-factor)); margin-bottom: 16px; opacity: var(--downloads-item-details-opacity); } #downloadsPanel-blockedSubview-title, #downloadsPanel-blockedSubview-details1, #downloadsPanel-blockedSubview-details2 { -moz-margin-start: 64px; -moz-margin-end: 16px; } /*** Progressmeter ***/ /* %include progressmeter.inc.css - this happens as @import at the start of the file */ /* === END downloads.inc.css === */ /*** Panel and outer controls ***/ #downloadsPanel[keyfocus] #downloadsSummary:focus, #downloadsPanel[keyfocus] .downloadsPanelFooterButton:focus { outline: 1px #008484 dotted; outline-offset: -1px; } #downloadsPanel[keyfocus] #downloadsSummary:focus { outline-offset: -5px; } richlistitem[type="download"][showingsubview] { background-color: Highlight; color: HighlightText; transition: background-color var(--panelui-subview-transition-duration), color var(--panelui-subview-transition-duration); } #downloadsPanel:not([keyfocus]) richlistitem[type="download"][state="1"][exists][verdict="Malware"]:hover, #downloadsPanel:not([keyfocus]) richlistitem[type="download"][state="1"][exists][verdict="Malware"]:hover:active, richlistitem[type="download"][showingsubview][verdict="Malware"] { background-color: hsl(4, 82%, 47%); color: white; } /*** List items and similar elements in the summary ***/ :root { --downloads-item-height: 5.5em; --downloads-item-font-size-factor: 0.9; --downloads-item-details-opacity: 0.6; } .downloadButton > .button-box { border: 1px solid transparent; } #downloadsPanel[keyfocus] .downloadButton:focus > .button-box { border: 1px dotted #008484; } richlistitem[type="download"][verdict="PotentiallyUnwanted"] .blockedIcon { list-style-image: url("chrome://global/skin/icons/warning.svg"); } richlistitem[type="download"][verdict="Uncommon"] .blockedIcon { list-style-image: url("chrome://global/skin/icons/information-32.png"); } @media (-moz-windows-default-theme) { richlistitem[type="download"][verdict="Malware"] { color: #FF0000; } } /*** Highlighted list items ***/ #downloadsListBox:-moz-focusring > richlistitem[type="download"][selected] { outline: 1px #008484 dotted; outline-offset: -1px; /*-moz-outline-radius: 3px;*/ }