Bug 1801607 - Improve certManager layout. r=mconley,settings-reviewers

Allow the tabbox/tabpanels to shrink, and remove an useless <vbox>.

Differential Revision: https://phabricator.services.mozilla.com/D163660
This commit is contained in:
Emilio Cobos Álvarez 2022-12-20 09:19:09 +00:00
parent 41c5cf472b
commit 2b72ef3e89
6 changed files with 205 additions and 193 deletions

View file

@ -30,7 +30,7 @@ dialog.doScroll::part(content-box) {
}
tree:not(#rejectsTree) {
min-height: 15em;
height: 15em;
}
.actionButtons {

View file

@ -387,10 +387,6 @@ checkbox {
margin: 0;
}
.certManagerRichlistBox > richlistitem {
min-height: 30px !important;
}
.typeIcon,
.actionIcon,
.actionsMenu::part(icon) {

View file

@ -13,3 +13,19 @@
* box, which don't support it. */
width: 0;
}
#certmanager {
/* This prevents horizontal scrollbars due to <tree> and non-XUL layout
* interactions */
padding: 0;
}
/* This matches the <tree> height from dialog.css */
richlistbox {
height: 15em;
}
richlistbox,
richlistitem {
min-height: 30px;
}

View file

@ -13,7 +13,6 @@
xmlns:html="http://www.w3.org/1999/xhtml"
data-l10n-id="certmgr-title"
onload="LoadCerts();"
style="min-width: 45em; min-height: 32em;"
persist="screenX screenY width height">
<dialog id="certmanager"
buttons="accept">
@ -25,206 +24,202 @@
<script src="chrome://pippki/content/pippki.js"/>
<script src="chrome://pippki/content/certManager.js"/>
<vbox flex="1">
<tabbox id="certmanagertabs" flex="1" style="margin:5px" persist="selectedIndex">
<tabs id="certMgrTabbox">
<tab id="mine_tab" data-l10n-id="certmgr-tab-mine"/>
<tab id="remembered_tab" data-l10n-id="certmgr-tab-remembered"/>
<tab id="others_tab" data-l10n-id="certmgr-tab-people"/>
<tab id="websites_tab" data-l10n-id="certmgr-tab-servers"/>
<tab id="ca_tab" data-l10n-id="certmgr-tab-ca" selected="true"/>
</tabs>
<tabpanels flex="1">
<vbox id="myCerts" flex="1">
<description data-l10n-id="certmgr-mine"></description>
<separator class="thin"/>
<tree id="user-tree" flex="1" enableColumnDrag="true"
onselect="mine_enableButtons()">
<treecols>
<!--
The below code may suggest that 'ordinal' is still a supported XUL
XUL attribute. It is not. This is a crutch so that we can
continue persisting the CSS -moz-box-ordinal-group attribute,
which is the appropriate replacement for the ordinal attribute
but cannot yet be easily persisted. The code that synchronizes
the attribute with the CSS lives in
toolkit/content/widget/tree.js and is specific to tree elements.
-->
<treecol id="certcol" data-l10n-id="certmgr-cert-name" primary="true"
persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="tokencol" data-l10n-id="certmgr-token-name"
persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="serialnumcol" data-l10n-id="certmgr-serial"
persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="issuedcol" data-l10n-id="certmgr-begins-label"
hidden="true" persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="expiredcol" data-l10n-id="certmgr-expires-label"
persist="hidden width ordinal" flex="1"/>
</treecols>
<treechildren ondblclick="viewCerts();"/>
</tree>
<tabbox id="certmanagertabs" flex="1" persist="selectedIndex">
<tabs id="certMgrTabbox">
<tab id="mine_tab" data-l10n-id="certmgr-tab-mine"/>
<tab id="remembered_tab" data-l10n-id="certmgr-tab-remembered"/>
<tab id="others_tab" data-l10n-id="certmgr-tab-people"/>
<tab id="websites_tab" data-l10n-id="certmgr-tab-servers"/>
<tab id="ca_tab" data-l10n-id="certmgr-tab-ca" selected="true"/>
</tabs>
<tabpanels flex="1">
<vbox id="myCerts" flex="1">
<description data-l10n-id="certmgr-mine"></description>
<separator class="thin"/>
<tree id="user-tree" flex="1" enableColumnDrag="true"
onselect="mine_enableButtons()">
<treecols>
<!--
The below code may suggest that 'ordinal' is still a supported XUL
XUL attribute. It is not. This is a crutch so that we can
continue persisting the CSS -moz-box-ordinal-group attribute,
which is the appropriate replacement for the ordinal attribute
but cannot yet be easily persisted. The code that synchronizes
the attribute with the CSS lives in
toolkit/content/widget/tree.js and is specific to tree elements.
-->
<treecol id="certcol" data-l10n-id="certmgr-cert-name" primary="true"
persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="tokencol" data-l10n-id="certmgr-token-name"
persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="serialnumcol" data-l10n-id="certmgr-serial"
persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="issuedcol" data-l10n-id="certmgr-begins-label"
hidden="true" persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="expiredcol" data-l10n-id="certmgr-expires-label"
persist="hidden width ordinal" flex="1"/>
</treecols>
<treechildren ondblclick="viewCerts();"/>
</tree>
<separator class="thin"/>
<separator class="thin"/>
<hbox>
<button id="mine_viewButton" class="normal"
data-l10n-id="certmgr-view"
disabled="true" oncommand="viewCerts();"/>
<button id="mine_backupButton" class="normal"
data-l10n-id="certmgr-backup"
disabled="true" oncommand="backupCerts();"/>
<button id="mine_backupAllButton" class="normal"
data-l10n-id="certmgr-backup-all"
oncommand="backupAllCerts();"/>
<button id="mine_restoreButton" class="normal"
data-l10n-id="certmgr-restore"
oncommand="restoreCerts();"/>
<button id="mine_deleteButton" class="normal"
data-l10n-id="certmgr-delete"
disabled="true" oncommand="deleteCerts();"/>
</hbox>
</vbox>
<vbox id="rememberedCerts" flex="1">
<description data-l10n-id="certmgr-remembered"></description>
<separator class="thin"/>
<listheader equalsize="always">
<treecol id="hostcol" data-l10n-id="certmgr-cert-host" primary="true"
persist="hidden width ordinal" flex="1"/>
<treecol id="certcol" data-l10n-id="certmgr-cert-name" primary="true"
persist="hidden width ordinal" flex="1"/>
<treecol id="serialnumcol" data-l10n-id="certmgr-serial"
persist="hidden width ordinal" flex="1"/>
</listheader>
<richlistbox class="certManagerRichlistBox" id="rememberedList" flex="1" selected="false"/>
<separator class="thin"/>
<hbox>
<button id="remembered_deleteButton" class="normal"
data-l10n-id="certmgr-delete"
oncommand="rememberedDecisionsRichList.deleteSelectedRichListItem()"/>
<button id="remembered_viewButton" class="normal"
data-l10n-id="certmgr-view"
oncommand="rememberedDecisionsRichList.viewSelectedRichListItem()"/>
</hbox>
</vbox>
<vbox id="othersCerts" flex="1">
<description data-l10n-id="certmgr-people"></description>
<separator class="thin"/>
<tree id="email-tree" flex="1"
onselect="email_enableButtons()">
<treecols>
<treecol id="certcol" data-l10n-id="certmgr-cert-name" primary="true"
flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="emailcol" data-l10n-id="certmgr-email"
flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="expiredcol" data-l10n-id="certmgr-expires-label"
flex="1"/>
</treecols>
<treechildren flex="1" ondblclick="viewCerts();"/>
</tree>
<separator class="thin"/>
<hbox>
<button id="email_viewButton"
<hbox>
<button id="mine_viewButton" class="normal"
data-l10n-id="certmgr-view"
disabled="true" oncommand="viewCerts();"/>
<button id="email_addButton"
<button id="mine_backupButton" class="normal"
data-l10n-id="certmgr-backup"
disabled="true" oncommand="backupCerts();"/>
<button id="mine_backupAllButton" class="normal"
data-l10n-id="certmgr-backup-all"
oncommand="backupAllCerts();"/>
<button id="mine_restoreButton" class="normal"
data-l10n-id="certmgr-restore"
oncommand="addEmailCert();"/>
<button id="email_exportButton"
data-l10n-id="certmgr-export"
disabled="true" oncommand="exportCerts();"/>
<button id="email_deleteButton"
oncommand="restoreCerts();"/>
<button id="mine_deleteButton" class="normal"
data-l10n-id="certmgr-delete"
disabled="true" oncommand="deleteCerts();"/>
</hbox>
</vbox>
</hbox>
</vbox>
<vbox id="rememberedCerts" flex="1">
<description data-l10n-id="certmgr-remembered"></description>
<separator class="thin"/>
<vbox id="webCerts" flex="1">
<description data-l10n-id="certmgr-server"></description>
<separator class="thin"/>
<listheader equalsize="always">
<treecol id="hostcol" data-l10n-id="certmgr-cert-host" primary="true"
persist="hidden width ordinal" flex="1"/>
<treecol id="certcol" data-l10n-id="certmgr-cert-name" primary="true"
persist="hidden width ordinal" flex="1"/>
<treecol id="serialnumcol" data-l10n-id="certmgr-serial"
persist="hidden width ordinal" flex="1"/>
</listheader>
<richlistbox id="rememberedList" flex="1" selected="false"/>
<listheader equalsize="always">
<treecol id="sitecol" data-l10n-id="certmgr-cert-server" primary="true" flex="1"/>
<treecol id="certcol" data-l10n-id="certmgr-cert-name" flex="1"/>
<treecol id="lifetimecol" data-l10n-id="certmgr-override-lifetime" flex="1"/>
</listheader>
<richlistbox ondblclick="serverRichList.viewSelectedRichListItem();" class="certManagerRichlistBox" id="serverList" flex="1" selected="false"/>
<separator class="thin"/>
<separator class="thin"/>
<hbox>
<button id="remembered_deleteButton" class="normal"
data-l10n-id="certmgr-delete"
<hbox>
<button id="websites_viewButton"
data-l10n-id="certmgr-view" oncommand="serverRichList.viewSelectedRichListItem();"/>
<button id="websites_exportButton"
data-l10n-id="certmgr-export" oncommand="serverRichList.exportSelectedRichListItem();"/>
<button id="websites_deleteButton"
data-l10n-id="certmgr-delete" oncommand="serverRichList.deleteSelectedRichListItem();"/>
<button id="websites_exceptionButton"
data-l10n-id="certmgr-add-exception"
oncommand="serverRichList.addException();"/>
</hbox>
</vbox>
<vbox id="CACerts" flex="1">
<description data-l10n-id="certmgr-ca"></description>
<separator class="thin"/>
<tree id="ca-tree" flex="1" enableColumnDrag="true"
onselect="ca_enableButtons()">
<treecols>
<!--
The below code may suggest that 'ordinal' is still a supported XUL
XUL attribute. It is not. This is a crutch so that we can
continue persisting the CSS -moz-box-ordinal-group attribute,
which is the appropriate replacement for the ordinal attribute
but cannot yet be easily persisted. The code that synchronizes
the attribute with the CSS lives in
toolkit/content/widget/tree.js and is specific to tree elements.
-->
<treecol id="certcol" data-l10n-id="certmgr-cert-name" primary="true"
persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="tokencol" data-l10n-id="certmgr-token-name"
persist="hidden width ordinal" flex="1"/>
</treecols>
<treechildren ondblclick="viewCerts();"/>
</tree>
oncommand="rememberedDecisionsRichList.deleteSelectedRichListItem()"/>
<separator class="thin"/>
<hbox>
<button id="ca_viewButton"
<button id="remembered_viewButton" class="normal"
data-l10n-id="certmgr-view"
disabled="true" oncommand="viewCerts();"/>
<button id="ca_editButton"
data-l10n-id="certmgr-edit"
disabled="true" oncommand="editCerts();"/>
<button id="ca_addButton"
data-l10n-id="certmgr-restore"
oncommand="addCACerts();"/>
<button id="ca_exportButton"
data-l10n-id="certmgr-export"
disabled="true" oncommand="exportCerts();"/>
<button id="ca_deleteButton"
data-l10n-id="certmgr-delete-builtin"
disabled="true" oncommand="deleteCerts();"/>
</hbox>
</vbox>
</tabpanels>
</tabbox>
</vbox>
oncommand="rememberedDecisionsRichList.viewSelectedRichListItem()"/>
</hbox>
</vbox>
<vbox id="othersCerts" flex="1">
<description data-l10n-id="certmgr-people"></description>
<separator class="thin"/>
<tree id="email-tree" flex="1"
onselect="email_enableButtons()">
<treecols>
<treecol id="certcol" data-l10n-id="certmgr-cert-name" primary="true"
flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="emailcol" data-l10n-id="certmgr-email"
flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="expiredcol" data-l10n-id="certmgr-expires-label"
flex="1"/>
</treecols>
<treechildren flex="1" ondblclick="viewCerts();"/>
</tree>
<separator class="thin"/>
<hbox>
<button id="email_viewButton"
data-l10n-id="certmgr-view"
disabled="true" oncommand="viewCerts();"/>
<button id="email_addButton"
data-l10n-id="certmgr-restore"
oncommand="addEmailCert();"/>
<button id="email_exportButton"
data-l10n-id="certmgr-export"
disabled="true" oncommand="exportCerts();"/>
<button id="email_deleteButton"
data-l10n-id="certmgr-delete"
disabled="true" oncommand="deleteCerts();"/>
</hbox>
</vbox>
<vbox id="webCerts" flex="1">
<description data-l10n-id="certmgr-server"></description>
<separator class="thin"/>
<listheader equalsize="always">
<treecol id="sitecol" data-l10n-id="certmgr-cert-server" primary="true" flex="1"/>
<treecol id="certcol" data-l10n-id="certmgr-cert-name" flex="1"/>
<treecol id="lifetimecol" data-l10n-id="certmgr-override-lifetime" flex="1"/>
</listheader>
<richlistbox ondblclick="serverRichList.viewSelectedRichListItem();" id="serverList" flex="1" selected="false"/>
<separator class="thin"/>
<hbox>
<button id="websites_viewButton"
data-l10n-id="certmgr-view" oncommand="serverRichList.viewSelectedRichListItem();"/>
<button id="websites_exportButton"
data-l10n-id="certmgr-export" oncommand="serverRichList.exportSelectedRichListItem();"/>
<button id="websites_deleteButton"
data-l10n-id="certmgr-delete" oncommand="serverRichList.deleteSelectedRichListItem();"/>
<button id="websites_exceptionButton"
data-l10n-id="certmgr-add-exception"
oncommand="serverRichList.addException();"/>
</hbox>
</vbox>
<vbox id="CACerts" flex="1">
<description data-l10n-id="certmgr-ca"></description>
<separator class="thin"/>
<tree id="ca-tree" flex="1" enableColumnDrag="true"
onselect="ca_enableButtons()">
<treecols>
<!--
The below code may suggest that 'ordinal' is still a supported XUL
XUL attribute. It is not. This is a crutch so that we can
continue persisting the CSS -moz-box-ordinal-group attribute,
which is the appropriate replacement for the ordinal attribute
but cannot yet be easily persisted. The code that synchronizes
the attribute with the CSS lives in
toolkit/content/widget/tree.js and is specific to tree elements.
-->
<treecol id="certcol" data-l10n-id="certmgr-cert-name" primary="true"
persist="hidden width ordinal" flex="1"/>
<splitter class="tree-splitter"/>
<treecol id="tokencol" data-l10n-id="certmgr-token-name"
persist="hidden width ordinal" flex="1"/>
</treecols>
<treechildren ondblclick="viewCerts();"/>
</tree>
<separator class="thin"/>
<hbox>
<button id="ca_viewButton"
data-l10n-id="certmgr-view"
disabled="true" oncommand="viewCerts();"/>
<button id="ca_editButton"
data-l10n-id="certmgr-edit"
disabled="true" oncommand="editCerts();"/>
<button id="ca_addButton"
data-l10n-id="certmgr-restore"
oncommand="addCACerts();"/>
<button id="ca_exportButton"
data-l10n-id="certmgr-export"
disabled="true" oncommand="exportCerts();"/>
<button id="ca_deleteButton"
data-l10n-id="certmgr-delete-builtin"
disabled="true" oncommand="deleteCerts();"/>
</hbox>
</vbox>
</tabpanels>
</tabbox>
</dialog>
</window>

View file

@ -580,6 +580,11 @@ stack > *|*:not(:-moz-native-anonymous) {
tabbox {
-moz-box-orient: vertical;
min-height: 0;
}
tabpanels {
min-height: 0;
}
tabs {

View file

@ -318,7 +318,7 @@ xul|tabs {
xul|tab {
appearance: none;
margin-top: 0;
margin: 0;
padding: 2px 20px 0;
min-height: 44px;
color: inherit;