Bug 1354145 - set photon-structure attribute on root, update palette/panel icon sizes and layout, r?mikedeboer
MozReview-Commit-ID: 2LhIhI480Yb
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -1329,22 +1329,36 @@ toolbarpaletteitem[place="palette"] {
/* icon (32) + margin (2 * 4) + button padding/border (2 * 4) + label margin (~2) + label
* line-height (1.5em): */
height: calc(50px + 1.5em);
margin-bottom: 5px;
overflow: hidden;
display: inline-block;
}
+#main-window[photon-structure] toolbarpaletteitem[place="palette"] {
+ -moz-binding: url("chrome://global/content/bindings/toolbar.xml#toolbarpaletteitem-palette-wrapping-label");
+ width: 7em;
+ /* icon (16) + margin (9 + 12) + 3 lines of text: */
+ height: calc(39px + 3em);
+ margin-inline-end: 24px;
+ overflow: visible;
+}
+
toolbarpaletteitem[place="palette"][hidden] {
display: none;
}
#customization-palette .toolbarpaletteitem-box {
-moz-box-pack: center;
+ width: 7em;
+ max-width: 7em;
+}
+
+#main-window:not([photon-structure]) #customization-palette .toolbarpaletteitem-box {
-moz-box-flex: 1;
width: 10em;
max-width: 10em;
}
#main-window[customizing=true] .addon-banner-item,
#main-window[customizing=true] .panel-banner-item {
display: none;
--- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js
@@ -116,19 +116,21 @@ const PanelUI = {
// we need to know whether anything is in the permanent panel area.
_initPhotonPanel() {
if (gPhotonStructure) {
this.overflowFixedList.hidden = false;
// Also unhide the separator. We use CSS to hide/show it based on the panel's content.
this.overflowFixedList.previousSibling.hidden = false;
CustomizableUI.registerMenuPanel(this.overflowFixedList, CustomizableUI.AREA_FIXED_OVERFLOW_PANEL);
this.navbar.setAttribute("photon-structure", "true");
+ document.documentElement.setAttribute("photon-structure", "true");
this.updateOverflowStatus();
} else {
this.navbar.removeAttribute("photon-structure");
+ document.documentElement.removeAttribute("photon-structure");
}
},
_initElements() {
for (let [k, v] of Object.entries(this.kElements)) {
if (!v) {
continue;
}
--- a/browser/themes/shared/browser.inc
+++ b/browser/themes/shared/browser.inc
@@ -10,8 +10,14 @@
%ifdef XP_MACOSX
% Prior to 10.7 there wasn't a native fullscreen button so we use #restore-button to exit fullscreen
% and want it to behave like other toolbar buttons.
%define primaryToolbarButtons @primaryToolbarButtons@, #restore-button
%endif
%define inAnyPanel :-moz-any(:not([cui-areatype="toolbar"]), [overflowedItem=true])
+
+%ifdef MOZ_PHOTON_THEME
+%define panelPaletteIconSize var(--panel-palette-icon-size)
+%else
+%define panelPaletteIconSize 32px
+%endif
--- a/browser/themes/shared/customizableui/customizeMode.inc.css
+++ b/browser/themes/shared/customizableui/customizeMode.inc.css
@@ -335,49 +335,49 @@ toolbarpaletteitem[place="toolbar"]:not(
outline: 1px dotted;
-moz-outline-radius: 2.5px;
}
toolbarpaletteitem[place="toolbar"]:not([mousedown="true"]):-moz-focusring {
outline-offset: -5px;
}
-#wrapper-edit-controls[place="palette"] > #edit-controls > toolbarbutton,
-#wrapper-edit-controls[place="palette"] > #edit-controls > separator,
-#wrapper-zoom-controls[place="palette"] > #zoom-controls > toolbarbutton,
-#wrapper-zoom-controls[place="palette"] > #zoom-controls > separator {
+:root:not([photon-structure]) #wrapper-edit-controls[place="palette"] > #edit-controls > toolbarbutton,
+:root:not([photon-structure]) #wrapper-edit-controls[place="palette"] > #edit-controls > separator,
+:root:not([photon-structure]) #wrapper-zoom-controls[place="palette"] > #zoom-controls > toolbarbutton,
+:root:not([photon-structure]) #wrapper-zoom-controls[place="palette"] > #zoom-controls > separator {
margin-top: 20px;
}
-#wrapper-edit-controls[place="palette"] > #edit-controls > toolbarbutton,
-#wrapper-zoom-controls[place="palette"] > #zoom-controls > toolbarbutton {
+:root:not([photon-structure]) #wrapper-edit-controls[place="palette"] > #edit-controls > toolbarbutton,
+:root:not([photon-structure]) #wrapper-zoom-controls[place="palette"] > #zoom-controls > toolbarbutton {
margin-left: 0;
margin-right: 0;
max-width: 24px;
min-width: 24px;
max-height: 24px;
min-height: 24px;
padding: 4px;
}
-#wrapper-edit-controls[place="palette"] > #edit-controls > toolbarbutton > .toolbarbutton-icon,
-#wrapper-zoom-controls[place="palette"] > #zoom-controls > toolbarbutton > .toolbarbutton-icon {
+:root:not([photon-structure]) #wrapper-edit-controls[place="palette"] > #edit-controls > toolbarbutton > .toolbarbutton-icon,
+:root:not([photon-structure]) #wrapper-zoom-controls[place="palette"] > #zoom-controls > toolbarbutton > .toolbarbutton-icon {
width: 16px;
}
#wrapper-edit-controls > #edit-controls > toolbarbutton > .toolbarbutton-icon {
opacity: 1; /* To ensure these buttons always look enabled in customize mode */
}
#wrapper-zoom-controls[place="palette"] > #zoom-controls > #zoom-reset-button,
#wrapper-zoom-controls[place="palette"] > #zoom-controls > #zoom-reset-button + separator {
display: none;
}
-#wrapper-personal-bookmarks:not([place="toolbar"]) > #personal-bookmarks {
+:root:not([photon-structure]) #wrapper-personal-bookmarks:not([place="toolbar"]) > #personal-bookmarks {
-moz-box-pack: center;
min-height: 48px;
}
#personal-bookmarks[cui-areatype="toolbar"]:not([overflowedItem=true]) > #bookmarks-toolbar-placeholder > .toolbarbutton-icon {
margin-inline-end: 5px;
}
--- a/browser/themes/shared/customizableui/panelUI.inc.css
+++ b/browser/themes/shared/customizableui/panelUI.inc.css
@@ -21,16 +21,21 @@
%include ../browser.inc
:root {
--panel-ui-exit-subview-gutter-width: 38px;
--appmenu-yellow-warning-border-color: hsl(45, 100%, 77%);
--appmenu-yellow-warning-color: #FFEFBF;
--appmenu-yellow-warning-hover-color: #FFE8A2;
--appmenu-yellow-warning-active-color: #FFE38F;
+ --panel-palette-icon-size: 32px;
+}
+
+:root[photon-structure] {
+ --panel-palette-icon-size: 16px;
}
#PanelUI-popup #PanelUI-contents:empty {
height: 128px;
}
#PanelUI-popup #PanelUI-contents:empty::before {
content: "";
@@ -385,44 +390,41 @@ photonpanelmultiview panelview[title] {
}
.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),
+:root:not([photon-structure]) 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 {
+:root:not([photon-structure]) 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,
+toolbarpaletteitem[place="palette"] > toolbaritem[sdkstylewidget="true"] > .toolbarbutton-1 > .toolbarbutton-icon,
+toolbarpaletteitem[place="panel"] > toolbaritem[sdkstylewidget="true"] > .toolbarbutton-1 > .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;
+ height: @panelPaletteIconSize@;
+ width: @panelPaletteIconSize@;
}
.customization-palette .toolbarbutton-1 {
-moz-appearance: none;
-moz-box-orient: vertical;
}
.panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button {
@@ -530,20 +532,31 @@ toolbaritem[cui-areatype="menu-panel"][s
.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;
+ width: @panelPaletteIconSize@;
+ height: @panelPaletteIconSize@;
+ min-width: @panelPaletteIconSize@;
+ min-height: @panelPaletteIconSize@;
+}
+
+.panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
+.panelUI-grid .toolbarbutton-1 > .toolbarbutton-icon,
+.panelUI-grid .toolbarbutton-1 > .toolbarbutton-badge-stack,
+:root:not([photon-structure]) .customization-palette .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
+:root:not([photon-structure]) .customization-palette .toolbarbutton-1 > .toolbarbutton-icon,
+:root:not([photon-structure]) .customization-palette .toolbarbutton-1 > .toolbarbutton-badge-stack,
+.panelUI-grid #bookmarks-toolbar-placeholder > .toolbarbutton-icon,
+:root:not([photon-structure]) .customization-palette #bookmarks-toolbar-placeholder > .toolbarbutton-icon,
+.panel-customization-placeholder-child > .toolbarbutton-icon {
/* 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).
@@ -552,27 +565,32 @@ toolbaritem[cui-areatype="menu-panel"][s
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;
+.customization-palette .toolbarbutton-1 > .toolbarbutton-badge-stack > .toolbarbutton-icon,
+.panelUI-grid .toolbarbutton-1 > .toolbarbutton-badge-stack > .toolbarbutton-icon {
+ width: @panelPaletteIconSize@;
+ height: @panelPaletteIconSize@;
+ min-width: @panelPaletteIconSize@;
+ min-height: @panelPaletteIconSize@;
margin: 0;
padding: 0;
}
-toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
+:root[photon-structure] .customization-palette .toolbarbutton-1 {
+ padding: 12px 0 9px;
+ margin: 0;
+}
+
+:root[photon-structure] 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 {
@@ -1146,30 +1164,30 @@ toolbarpaletteitem[place="palette"] > to
display: none;
}
panelview .toolbarbutton-1,
.subviewbutton,
.widget-overflow-list .toolbarbutton-1,
.panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button,
.share-provider-button,
-.toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton {
+:root:not([photon-structure]) .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,
.share-provider-button,
-.toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton {
+:root:not([photon-structure]) .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton {
border-width: 1px;
}
.subviewbutton.panel-subview-footer {
border-radius: 0;
border: none;
}
@@ -1592,32 +1610,32 @@ toolbarpaletteitem[place="palette"] > #s
border-top-color: transparent !important;
}
.toolbaritem-combined-buttons + .toolbaritem-combined-buttons@inAnyPanel@,
toolbarpaletteitem[haswideitem][place="panel"] + toolbarpaletteitem[haswideitem][place="panel"] {
margin-top: -1px;
}
-.toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton {
+:root:not([photon-structure]) .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton {
border: 0;
padding: .5em;
margin: 0;
-moz-box-flex: 1;
min-width: calc(@menuPanelButtonWidth@);
max-width: calc(@menuPanelButtonWidth@);
/* We'd prefer to use height: auto here but it leads to layout bugs in the panel. Cope:
1.2em for line height + 2 * .5em padding + margin on the label (2 * 2px) */
height: calc(2.2em + 4px);
max-height: none;
-moz-box-orient: horizontal;
}
-#edit-controls@inAnyPanel@ > #copy-button,
-#zoom-controls@inAnyPanel@ > #zoom-reset-button {
+:root:not([photon-structure]) #edit-controls@inAnyPanel@ > #copy-button,
+:root:not([photon-structure]) #zoom-controls@inAnyPanel@ > #zoom-reset-button {
/* reduce the width with 2px for this button to compensate for two separators
of 1px. */
min-width: calc(@menuPanelButtonWidth@ - 2px);
max-width: calc(@menuPanelButtonWidth@ - 2px);
}
#main-window:not([customizing]) .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton[disabled] > .toolbarbutton-icon {
opacity: .25;
--- a/toolkit/content/widgets/toolbar.xml
+++ b/toolkit/content/widgets/toolbar.xml
@@ -581,9 +581,18 @@
<content>
<xul:hbox class="toolbarpaletteitem-box" xbl:inherits="type,place">
<children/>
</xul:hbox>
<xul:label xbl:inherits="value=title"/>
</content>
</binding>
+ <binding id="toolbarpaletteitem-palette-wrapping-label" extends="chrome://global/content/bindings/toolbar.xml#toolbarpaletteitem">
+ <content>
+ <xul:hbox class="toolbarpaletteitem-box" xbl:inherits="type,place">
+ <children/>
+ </xul:hbox>
+ <xul:label xbl:inherits="xbl:text=title"/>
+ </content>
+ </binding>
+
</bindings>