/* 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/. */ %filter substitution %define menuPanelWidth 22.35em %define standaloneSubviewWidth 30em % XXXgijs This is the ugliest bit of code I think I've ever written for Mozilla. % Basically, the 0.1px is there to avoid CSS rounding errors causing buttons to wrap. % For gory details, refer to https://bugzilla.mozilla.org/show_bug.cgi?id=963365#c11 % There's no calc() here (and therefore lots of calc() where this is used) because % we don't support nested calc(): https://bugzilla.mozilla.org/show_bug.cgi?id=968761 %define menuPanelButtonWidth (@menuPanelWidth@ / 3 - 0.1px) %define buttonStateHover :not(:-moz-any([disabled],[open],:active)):hover %define menuStateHover :not(:-moz-any([disabled],:active))[_moz-menuactive] %define buttonStateActive :not([disabled]):-moz-any([open],:hover:active) %define menuStateActive :not([disabled])[_moz-menuactive]:active %define menuStateMenuActive :not([disabled])[_moz-menuactive] %include ../browser.inc :root { --panel-ui-exit-subview-gutter-width: 38px; } #PanelUI-popup #PanelUI-contents:empty { height: 128px; } #PanelUI-button { margin-inline-start: 2px; border-inline-start: 1px solid; border-image: linear-gradient(transparent, rgba(0,0,0,.1) 20%, rgba(0,0,0,.1) 80%, transparent); border-image-slice: 1; } #nav-bar[brighttext] > #PanelUI-button { border-image-source: linear-gradient(transparent, rgba(100%,100%,100%,.2) 20%, rgba(100%,100%,100%,.2) 80%, transparent); } #PanelUI-menu-button[badge-status] > .toolbarbutton-badge-stack > .toolbarbutton-badge { display: -moz-box; height: 10px; width: 10px; background-size: contain; border: none; } #PanelUI-menu-button[badge-status="download-success"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { display: none; } #PanelUI-menu-button[badge-status="update-succeeded"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { background: #74BF43 url(chrome://browser/skin/update-badge.svg) no-repeat center; height: 13px; } #PanelUI-menu-button[badge-status="update-failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { background: #D90000 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center; height: 13px; } #PanelUI-menu-button[badge-status="download-warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { box-shadow: none; filter: drop-shadow(0 1px 0 hsla(206, 50%, 10%, .15)); } #PanelUI-menu-button[badge-status="download-warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge, #PanelUI-menu-button[badge-status="download-severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { width: 7px; height: 7px; min-width: 0; border-radius: 50%; /* "!important" is necessary to override the rule in toolbarbutton.css */ margin-top: -1px !important; margin-right: -2px !important; } #PanelUI-menu-button[badge-status="download-warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { background: #FFBF00; } #PanelUI-menu-button[badge-status="download-severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { background: #D90000; } #PanelUI-menu-button[badge-status="download-warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive { filter: none; } .panel-subviews { padding: 4px; background-clip: padding-box; border-left: 1px solid var(--arrowpanel-border-color); box-shadow: 0 3px 5px hsla(210,4%,10%,.1), 0 0 7px hsla(210,4%,10%,.1); margin-inline-start: var(--panel-ui-exit-subview-gutter-width); } .panel-viewstack[viewtype="main"] > .panel-subviews { transform: translateX(@menuPanelWidth@); } .panel-viewstack[viewtype="main"] > .panel-subviews:-moz-locale-dir(rtl) { transform: translateX(-@menuPanelWidth@); } panelmultiview[nosubviews=true] > .panel-viewcontainer > .panel-viewstack > .panel-subviews { display: none; } .panel-viewstack:not([viewtype="main"]) > .panel-mainview > #PanelUI-mainView { -moz-box-flex: 1; } .panel-subview-body { overflow-y: auto; overflow-x: hidden; -moz-box-flex: 1; } #PanelUI-popup .panel-subview-body { margin: -4px; padding: 4px 4px; } .panel-subview-header, .subviewbutton.panel-subview-footer { box-sizing: border-box; min-height: 41px; padding: 11px 12px; } .panel-subview-header { margin: -4px -4px 4px; border-bottom: 1px solid var(--panel-separator-color); color: GrayText; font-variant: small-caps; } .cui-widget-panelview .panel-subview-header { display: none; } .cui-widget-panelview .subviewbutton.panel-subview-footer { margin: 4px 0 0; -moz-box-pack: center; } #PanelUI-mainView { display: flex; flex-direction: column; } #PanelUI-popup > arrowscrollbox > autorepeatbutton { display: none; } #PanelUI-popup > arrowscrollbox > scrollbox { overflow: visible; } #PanelUI-popup > .panel-arrowcontainer > .panel-arrowcontent { overflow: hidden; } #PanelUI-popup > .panel-arrowcontainer > .panel-arrowcontent, .cui-widget-panel > .panel-arrowcontainer > .panel-arrowcontent > .popup-internal-box { padding: 0; } .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-multiline-text, .panelUI-grid .toolbarbutton-1 > .toolbarbutton-multiline-text { line-height: 1.2; max-height: 2.4em; } .panelUI-grid .toolbarbutton-1:not([auto-hyphens="off"]) > .toolbarbutton-menubutton-button > .toolbarbutton-multiline-text, .panelUI-grid .toolbarbutton-1:not([auto-hyphens="off"]) > .toolbarbutton-multiline-text { -moz-hyphens: auto; } .panelUI-grid:not([customize-transitioning]) .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-multiline-text, .panelUI-grid:not([customize-transitioning]) .toolbarbutton-1 > .toolbarbutton-multiline-text { position: absolute; clip: rect(-0.1em, auto, 2.6em, auto); } .panelUI-grid .toolbarbutton-1 > .toolbarbutton-text, .panelUI-grid .toolbarbutton-1 > .toolbarbutton-multiline-text { text-align: center; /* Need to override toolkit theming which sets margin: 0 !important; */ margin: 2px 0 0 !important; } .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-multiline-text { text-align: center; margin: -1px 0 0; } #wrapper-edit-controls:-moz-any([place="palette"],[place="panel"]) > #edit-controls, #wrapper-zoom-controls:-moz-any([place="palette"],[place="panel"]) > #zoom-controls { margin-inline-start: 0; } #PanelUI-contents { max-width: @menuPanelWidth@; } #BMB_bookmarksPopup, .panel-mainview:not([panelid="PanelUI-popup"]) { max-width: @standaloneSubviewWidth@; } /* Give WebExtension stand-alone panels extra width for Chrome compatibility */ .cui-widget-panel[viewId^=PanelUI-webext-] .panel-mainview { max-width: 800px; } .cui-widget-panel[viewId^=PanelUI-webext-] > .panel-arrowcontainer > .panel-arrowcontent { padding: 0; } panelview[id^=PanelUI-webext-] { overflow: hidden; } panelview:not([mainview]) .toolbarbutton-text, .cui-widget-panel toolbarbutton > .toolbarbutton-text { text-align: start; display: -moz-box; } .cui-widget-panel > .panel-arrowcontainer > .panel-arrowcontent { padding: 4px 0; } .cui-widget-panel.cui-widget-panelWithFooter > .panel-arrowcontainer > .panel-arrowcontent { padding-bottom: 0; } #PanelUI-contents { display: block; flex: 1 0 auto; margin-left: auto; margin-right: auto; padding: .5em 0; max-width: @menuPanelWidth@; } #PanelUI-contents-scroller { overflow-y: auto; overflow-x: hidden; width: @menuPanelWidth@; padding-left: 5px; padding-right: 5px; flex: auto; } .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton > .toolbarbutton-icon { min-width: 0; min-height: 0; margin: 0; } toolbaritem[cui-areatype="menu-panel"][sdkstylewidget="true"]:not(.panel-wide-item), .panelUI-grid .toolbarbutton-1, .panel-customization-placeholder-child { -moz-appearance: none; -moz-box-orient: vertical; width: calc(@menuPanelButtonWidth@); height: calc(51px + 2.2em); } /* In order to have button labels constrained appropriately, items inside the toolbarpaletteitem * should have a min-width set so they abide by the width set above (which they do outside of * customize mode because they're in a flexed container) */ toolbarpaletteitem[place="panel"]:not([haswideitem=true]) > .toolbarbutton-1 { min-width: 0.01px; } /* Help SDK buttons fit in. */ toolbarpaletteitem[place="palette"] > toolbarbutton[constrain-size="true"] > .toolbarbutton-icon, toolbarpaletteitem[place="palette"] > toolbarbutton[constrain-size="true"] > .toolbarbutton-badge-stack > .toolbarbutton-icon, toolbarbutton[constrain-size="true"][cui-areatype="menu-panel"] > .toolbarbutton-icon, toolbarbutton[constrain-size="true"][cui-areatype="menu-panel"] > .toolbarbutton-badge-stack > .toolbarbutton-icon { height: 32px; width: 32px; } toolbarpaletteitem:-moz-any([place="palette"], [place="panel"]) > toolbaritem[sdkstylewidget="true"] > .toolbarbutton-1 > .toolbarbutton-icon { width: 32px; height: 32px; } .customization-palette .toolbarbutton-1 { -moz-appearance: none; -moz-box-orient: vertical; } .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button { -moz-appearance: none; -moz-box-orient: vertical; width: calc(@menuPanelButtonWidth@ - 2px); height: calc(49px + 2.2em); border: 0; } .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-text, .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-multiline-text { margin-top: 2px; /* Hack needed to get the label of type=menu-button aligned with other buttons */ } .panel-customization-placeholder-child { margin: 6px 0 0; padding: 2px 6px; border: 1px solid transparent; } .panelUI-grid .toolbarbutton-1[type="menu"] { background-image: url("chrome://browser/skin/toolbarbutton-dropdown-arrow.png"); background-position: right 3px top 16px; background-repeat: no-repeat; } .panelUI-grid .toolbarbutton-1[type="menu"]:-moz-locale-dir(rtl) { background-position: left 3px top 16px; } .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menu-dropmarker { display: none; } .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-dropmarker { -moz-box-align: center; width: 16px; margin-inline-start: -16px; height: 51px; margin-bottom: 2.2em; padding: 0; } .panelUI-grid .toolbarbutton-1:not([buttonover])@buttonStateHover@ > .toolbarbutton-menubutton-dropmarker { background-color: var(--arrowpanel-dimmed) !important; border-radius: 0 0 0 2px; } .panelUI-grid .toolbarbutton-1:not([buttonover])@buttonStateHover@ > .toolbarbutton-menubutton-dropmarker:-moz-locale-dir(rtl) { border-radius: 0 0 2px 0; } #main-window:not([customizing]) .panel-combined-button[disabled] > .toolbarbutton-icon { opacity: .5; } toolbaritem[cui-areatype="menu-panel"][sdkstylewidget="true"]:not(.panel-wide-item) { width: calc(@menuPanelButtonWidth@); margin: 0 !important; } toolbaritem[cui-areatype="menu-panel"][sdkstylewidget="true"]:not(.panel-wide-item) { -moz-box-align: center; -moz-box-pack: center; } toolbaritem[cui-areatype="menu-panel"][sdkstylewidget="true"] > iframe { margin: 4px auto; } #PanelUI-multiView[viewtype="subview"] > .panel-viewcontainer > .panel-viewstack > .panel-mainview > #PanelUI-mainView { background-color: var(--arrowpanel-dimmed); } #PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-contents-scroller > #PanelUI-contents > .panel-wide-item, #PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-contents-scroller > #PanelUI-contents > .toolbarbutton-1:not([panel-multiview-anchor="true"]), #PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-update-status, #PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-inner > toolbarseparator, #PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-inner > #PanelUI-customize, #PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-inner > #PanelUI-help:not([panel-multiview-anchor="true"]) { opacity: .5; } /* * XXXgijs: this is a workaround for a layout issue that was caused by these iframes, * which was affecting subview display. Because of this, we're hiding the iframe *only* * when displaying a subview. The discerning user might notice this, but it's not nearly * as bad as the brokenness. * This hack should be removed once https://bugzilla.mozilla.org/show_bug.cgi?id=975375 * is addressed. */ #PanelUI-multiView[viewtype="subview"] toolbaritem[cui-areatype="menu-panel"][sdkstylewidget="true"]:not(.panel-wide-item) > iframe { visibility: hidden; } toolbaritem[cui-areatype="menu-panel"][sdkstylewidget="true"]:not(.panel-wide-item) > .toolbarbutton-text { text-align: center; } .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon, .panelUI-grid .toolbarbutton-1 > .toolbarbutton-icon, .panelUI-grid .toolbarbutton-1 > .toolbarbutton-badge-stack, .customization-palette .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon, .customization-palette .toolbarbutton-1 > .toolbarbutton-icon, .customization-palette .toolbarbutton-1 > .toolbarbutton-badge-stack, .panelUI-grid #bookmarks-toolbar-placeholder > .toolbarbutton-icon, .customization-palette #bookmarks-toolbar-placeholder > .toolbarbutton-icon, .panel-customization-placeholder-child > .toolbarbutton-icon { width: 32px; height: 32px; min-width: 32px; min-height: 32px; /* Explanation for the below formula (A / B - C) A Each button is @menuPanelButtonWidth@ wide B Each button has two margins. C (46px / 2 = 23px) The button icon is 32 pixels wide. The button has 12px of horizontal padding (6 on each side). The button has 2px of horizontal border (1 on each side). Total width of button's icon + button padding should therefore be 46px, which means each horizontal margin should be the half the button's width - (46/2) px. */ margin: 4px calc(@menuPanelButtonWidth@ / 2 - 23px); } /* above we treat the container as the icon for the margins, that is so the /* badge itself is positioned correctly. Here we make sure that the icon itself /* has the minimum size we want, but no padding/margin. */ .panelUI-grid .toolbarbutton-1 > .toolbarbutton-badge-stack > .toolbarbutton-icon, .customization-palette .toolbarbutton-1 > .toolbarbutton-badge-stack > .toolbarbutton-icon { width: 32px; height: 32px; min-width: 32px; min-height: 32px; margin: 0; padding: 0; } toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton { -moz-box-flex: 1; } #personal-bookmarks[overflowedItem=true] > #bookmarks-toolbar-placeholder { -moz-box-flex: 1; } #personal-bookmarks[cui-areatype="toolbar"][overflowedItem=true] > #bookmarks-toolbar-placeholder > .toolbarbutton-icon { margin-inline-end: 2px; } #edit-controls@inAnyPanel@ > #copy-button, #zoom-controls@inAnyPanel@ > #zoom-reset-button { border-left: none; border-right: none; border-radius: 0; } #zoom-in-button > .toolbarbutton-text, #zoom-out-button > .toolbarbutton-text, #zoom-reset-button > .toolbarbutton-icon { display: none; } #PanelUI-footer { display: flex; flex-shrink: 0; flex-direction: column; background-color: var(--arrowpanel-dimmed); padding: 0; margin: 0; } #PanelUI-update-status[update-status]::after { content: ""; width: 14px; height: 14px; margin-inline-end: 16.5px; box-shadow: 0px 1px 0px rgba(255,255,255,.2) inset, 0px -1px 0px rgba(0,0,0,.1) inset, 0px 1px 0px rgba(12,27,38,.2); border-radius: 2px; background-size: contain; display: -moz-box; } #PanelUI-update-status[update-status="succeeded"]::after { background-image: url(chrome://browser/skin/update-badge.svg); background-color: #74BF43; } #PanelUI-update-status[update-status="failed"]::after { background-image: url(chrome://browser/skin/update-badge-failed.svg); background-color: #D90000; } #PanelUI-footer-inner { display: flex; border-top: 1px solid var(--panel-separator-color); } #PanelUI-multiView[viewtype="subview"] #PanelUI-footer-inner { position: relative; } #PanelUI-footer-inner > toolbarseparator { border: 0; border-left: 1px solid var(--panel-separator-color); margin: 7px 0 7px; -moz-appearance: none; } #PanelUI-footer-inner:hover > toolbarseparator { margin: 0; } #PanelUI-update-status, #PanelUI-help, #PanelUI-customize, #PanelUI-quit { margin: 0; padding: 11px 0; box-sizing: border-box; min-height: 40px; -moz-appearance: none; box-shadow: none; border: none; border-radius: 0; transition: background-color; -moz-box-orient: horizontal; } #PanelUI-update-status { border-top: 1px solid var(--panel-separator-color); } #PanelUI-update-status { border-bottom: 1px solid transparent; margin-bottom: -1px; } #PanelUI-update-status > .toolbarbutton-text { width: 0; /* Fancy cropping solution for flexbox. */ } #PanelUI-help, #PanelUI-quit { min-width: 46px; } #PanelUI-update-status > .toolbarbutton-text, #PanelUI-customize > .toolbarbutton-text { margin: 0; padding: 0 6px; text-align: start; } #PanelUI-help > .toolbarbutton-text, #PanelUI-quit > .toolbarbutton-text { display: none; } #PanelUI-update-status > .toolbarbutton-icon, #PanelUI-customize > .toolbarbutton-icon, #PanelUI-help > .toolbarbutton-icon, #PanelUI-quit > .toolbarbutton-icon { margin-inline-end: 0; } #PanelUI-customize { flex: 1; padding-inline-start: 15px; border-inline-start-style: none; } #PanelUI-update-status { width: calc(@menuPanelWidth@ + 30px); padding-inline-start: 15px; border-inline-start-style: none; } #PanelUI-update-status { list-style-image: url(chrome://branding/content/icon16.png); } #PanelUI-customize { list-style-image: url(chrome://browser/skin/menuPanel-customize.png); } #customization-panelHolder #PanelUI-customize { list-style-image: url(chrome://browser/skin/customizableui/menuPanel-customizeFinish.png); } #PanelUI-help { list-style-image: url(chrome://browser/skin/menuPanel-help.png); } #PanelUI-quit { border-inline-end-style: none; list-style-image: url(chrome://browser/skin/menuPanel-exit.png); } #PanelUI-customize, #PanelUI-help, #PanelUI-quit { -moz-image-region: rect(0, 16px, 16px, 0); } #PanelUI-customize:hover, #PanelUI-help:not([disabled]):hover, #PanelUI-quit:not([disabled]):hover { -moz-image-region: rect(0, 32px, 16px, 16px); } #PanelUI-customize:hover:active, #PanelUI-help:not([disabled]):hover:active, #PanelUI-quit:not([disabled]):hover:active { -moz-image-region: rect(0, 48px, 16px, 32px); } #PanelUI-help[panel-multiview-anchor="true"] { -moz-image-region: rect(0, 64px, 16px, 48px); } #PanelUI-help[disabled], #PanelUI-quit[disabled] { opacity: 0.4; } #PanelUI-help:not([disabled]):hover, #PanelUI-customize:hover, #PanelUI-quit:not([disabled]):hover { outline: 1px solid var(--arrowpanel-dimmed); background-color: var(--arrowpanel-dimmed); } #PanelUI-help:not([disabled]):hover:active, #PanelUI-customize:hover:active, #PanelUI-quit:not([disabled]):hover:active { outline: 1px solid var(--arrowpanel-dimmed-further); background-color: var(--arrowpanel-dimmed-further); box-shadow: 0 1px 0 hsla(210,4%,10%,.05) inset; } #PanelUI-update-status { color: black; } #PanelUI-update-status[update-status="succeeded"] { background-color: hsla(96,65%,75%,.5); } #PanelUI-update-status[update-status="succeeded"]:not([disabled]):hover { background-color: hsla(96,65%,75%,.8); } #PanelUI-update-status[update-status="succeeded"]:not([disabled]):hover:active { background-color: hsl(96,65%,75%); } #PanelUI-update-status[update-status="failed"] { background-color: hsla(359,69%,84%,.5); } #PanelUI-update-status[update-status="failed"]:not([disabled]):hover { background-color: hsla(359,69%,84%,.8); } #PanelUI-update-status[update-status="failed"]:not([disabled]):hover:active { background-color: hsl(359,69%,84%); } #PanelUI-quit:not([disabled]):hover { background-color: #d94141; outline-color: #c23a3a; } #PanelUI-quit:not([disabled]):hover:active { background-color: #ad3434; outline-color: #992e2e; } #customization-panelHolder #PanelUI-customize { color: white; background-color: hsl(108,66%,30%); text-shadow: none; margin-top: -1px; } #customization-panelHolder #PanelUI-customize + toolbarseparator { display: none; } #customization-panelHolder #PanelUI-customize:hover { background-color: hsl(109,65%,26%); } #customization-panelHolder #PanelUI-customize:hover:active { background-color: hsl(109,65%,22%); } #customization-palette .toolbarbutton-multiline-text, #customization-palette .toolbarbutton-text { display: none; } panelview .toolbarbutton-1, .subviewbutton, .widget-overflow-list .toolbarbutton-1, .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button, .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton { -moz-appearance: none; padding: 0 6px; background-color: transparent; border-radius: 2px; border-style: solid; border-color: transparent; } panelview .toolbarbutton-1, .subviewbutton, .widget-overflow-list .toolbarbutton-1, .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton { border-width: 1px; } .subviewbutton.panel-subview-footer { border-radius: 0; border: none; } .subviewbutton.panel-subview-footer > .menu-text { -moz-appearance: none; margin-inline-start: 0px !important; padding-inline-start: 6px; padding-inline-end: 6px; -moz-box-flex: 0; text-align: center; } .subviewbutton.panel-subview-footer > .toolbarbutton-icon { margin: 0; } .subviewbutton.panel-subview-footer > .toolbarbutton-text { text-align: center; padding: 0; } .subviewbutton.panel-subview-footer > .menu-accel-container { padding-inline-start: 6px; } .subviewbutton:not(.panel-subview-footer) { margin: 0; } .subviewbutton:not(.panel-subview-footer) > .toolbarbutton-text, /* Bookmark items need a more specific selector. */ .PanelUI-subView .subviewbutton:not(.panel-subview-footer) > .menu-text, .PanelUI-subView .subviewbutton:not(.panel-subview-footer) > .menu-iconic-text { font: menu; } .PanelUI-subView .subviewbutton[shortcut]::after { content: attr(shortcut); float: right; color: GrayText; } .PanelUI-subView.cui-widget-panelview .subviewbutton[shortcut]::after { margin-inline-start: 10px; } /* This is a