Improve CSS for HCM (bug 1726183)

The default outline for a focused text input is not that bad but for any reason when changing
the background color, all the good default border/outline properties are lost (it's the same
behaviour in Edge).
So in order have something consistent in HCM/non-HCM, a 2px-border+1px-outline (on @MReschenberg
advices) is added when an input is focused with different colors depending on HCM.
While working on the above issue, I noticed few bugs I fixed when in HCM:
 - input, button and select have some default properties which have been created at a time where
   annotation layer didn't exist, hence this patch remove them and set those properties where
   they should live;
 - some elements (like the main toolbar) is using a box-shadow which is invisible in HCM, hence
   it's replaced by a border-bottom in HCM;
 - some separators are invisible in HCM, hence use GrayText color to render them correctly;
 - the options for the zoom selection were invisible in HCM with Desert (one of the Windows 11
   themes).
This commit is contained in:
Calixte Denizet 2022-09-14 18:58:26 +02:00
parent bcdf161967
commit 07cd7cb3dc
3 changed files with 82 additions and 21 deletions

View File

@ -15,9 +15,20 @@
:root { :root {
--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>"); --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");
--input-focus-border-color: Highlight;
--input-focus-outline: 1px solid Canvas;
--input-unfocused-border-color: transparent;
--input-disabled-border-color: transparent;
--input-hover-border-color: black;
} }
@media (forced-colors: active) { @media (forced-colors: active) {
:root {
--input-focus-border-color: CanvasText;
--input-unfocused-border-color: ActiveText;
--input-disabled-border-color: GrayText;
--input-hover-border-color: Highlight;
}
.annotationLayer .textWidgetAnnotation input:required, .annotationLayer .textWidgetAnnotation input:required,
.annotationLayer .textWidgetAnnotation textarea:required, .annotationLayer .textWidgetAnnotation textarea:required,
.annotationLayer .choiceWidgetAnnotation select:required, .annotationLayer .choiceWidgetAnnotation select:required,
@ -78,7 +89,7 @@
.annotationLayer .buttonWidgetAnnotation.checkBox input, .annotationLayer .buttonWidgetAnnotation.checkBox input,
.annotationLayer .buttonWidgetAnnotation.radioButton input { .annotationLayer .buttonWidgetAnnotation.radioButton input {
background-image: var(--annotation-unfocused-field-background); background-image: var(--annotation-unfocused-field-background);
border: 1px solid transparent; border: 2px solid var(--input-unfocused-border-color);
box-sizing: border-box; box-sizing: border-box;
font: calc(9px * var(--scale-factor)) sans-serif; font: calc(9px * var(--scale-factor)) sans-serif;
height: 100%; height: 100%;
@ -113,7 +124,7 @@
.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled], .annotationLayer .buttonWidgetAnnotation.checkBox input[disabled],
.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] { .annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] {
background: none; background: none;
border: 1px solid transparent; border: 2px solid var(--input-disabled-border-color);
cursor: not-allowed; cursor: not-allowed;
} }
@ -122,24 +133,33 @@
.annotationLayer .choiceWidgetAnnotation select:hover, .annotationLayer .choiceWidgetAnnotation select:hover,
.annotationLayer .buttonWidgetAnnotation.checkBox input:hover, .annotationLayer .buttonWidgetAnnotation.checkBox input:hover,
.annotationLayer .buttonWidgetAnnotation.radioButton input:hover { .annotationLayer .buttonWidgetAnnotation.radioButton input:hover {
border: 1px solid rgba(0, 0, 0, 1); border: 2px solid var(--input-hover-border-color);
} }
.annotationLayer .textWidgetAnnotation input:focus, .annotationLayer .textWidgetAnnotation input:focus,
.annotationLayer .textWidgetAnnotation textarea:focus, .annotationLayer .textWidgetAnnotation textarea:focus,
.annotationLayer .choiceWidgetAnnotation select:focus { .annotationLayer .choiceWidgetAnnotation select:focus {
background: none; background: none;
border: 1px solid transparent; border: 2px solid var(--input-focus-border-color);
border-radius: 2px;
outline: var(--input-focus-outline);
} }
.annotationLayer .textWidgetAnnotation input :focus,
.annotationLayer .textWidgetAnnotation textarea :focus,
.annotationLayer .choiceWidgetAnnotation select :focus,
.annotationLayer .buttonWidgetAnnotation.checkBox :focus, .annotationLayer .buttonWidgetAnnotation.checkBox :focus,
.annotationLayer .buttonWidgetAnnotation.radioButton :focus { .annotationLayer .buttonWidgetAnnotation.radioButton :focus {
background-image: none; background-image: none;
background-color: transparent; background-color: transparent;
outline: auto; }
.annotationLayer .buttonWidgetAnnotation.checkBox :focus {
border: 2px solid var(--input-focus-border-color);
border-radius: 2px;
outline: var(--input-focus-outline);
}
.annotationLayer .buttonWidgetAnnotation.radioButton :focus {
border: 2px solid var(--input-focus-border-color);
outline: var(--input-focus-outline);
} }
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before, .annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,

View File

@ -45,11 +45,18 @@
--sidebar-toolbar-bg-color: rgba(245, 246, 247, 1); --sidebar-toolbar-bg-color: rgba(245, 246, 247, 1);
--toolbar-bg-color: rgba(249, 249, 250, 1); --toolbar-bg-color: rgba(249, 249, 250, 1);
--toolbar-border-color: rgba(204, 204, 204, 1); --toolbar-border-color: rgba(204, 204, 204, 1);
--toolbar-box-shadow: 0 1px 0 var(--toolbar-border-color);
--toolbar-border-bottom: none;
--toolbarSidebar-box-shadow: inset calc(-1px * var(--dir-factor)) 0 0
rgba(0, 0, 0, 0.25),
0 1px 0 rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.1);
--toolbarSidebar-border-bottom: none;
--button-hover-color: rgba(221, 222, 223, 1); --button-hover-color: rgba(221, 222, 223, 1);
--toggled-btn-color: rgba(0, 0, 0, 1); --toggled-btn-color: rgba(0, 0, 0, 1);
--toggled-btn-bg-color: rgba(0, 0, 0, 0.3); --toggled-btn-bg-color: rgba(0, 0, 0, 0.3);
--toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4);
--dropdown-btn-bg-color: rgba(215, 215, 219, 1); --dropdown-btn-bg-color: rgba(215, 215, 219, 1);
--dropdown-btn-border: none;
--separator-color: rgba(0, 0, 0, 0.3); --separator-color: rgba(0, 0, 0, 0.3);
--field-color: rgba(6, 6, 6, 1); --field-color: rgba(6, 6, 6, 1);
--field-bg-color: rgba(255, 255, 255, 1); --field-bg-color: rgba(255, 255, 255, 1);
@ -170,6 +177,9 @@
--toolbar-icon-opacity: 1; --toolbar-icon-opacity: 1;
--toolbar-icon-bg-color: ButtonText; --toolbar-icon-bg-color: ButtonText;
--toolbar-icon-hover-bg-color: ButtonFace; --toolbar-icon-hover-bg-color: ButtonFace;
--toolbar-border-color: CanvasText;
--toolbar-border-bottom: 1px solid var(--toolbar-border-color);
--toolbar-box-shadow: none;
--toggled-btn-color: HighlightText; --toggled-btn-color: HighlightText;
--toggled-btn-bg-color: LinkText; --toggled-btn-bg-color: LinkText;
--doorhanger-hover-color: ButtonFace; --doorhanger-hover-color: ButtonFace;
@ -178,7 +188,13 @@
--dialog-button-border: 1px solid Highlight; --dialog-button-border: 1px solid Highlight;
--dialog-button-hover-bg-color: Highlight; --dialog-button-hover-bg-color: Highlight;
--dialog-button-hover-color: ButtonFace; --dialog-button-hover-color: ButtonFace;
--dropdown-btn-border: 1px solid ButtonText;
--field-border-color: ButtonText; --field-border-color: ButtonText;
--main-color: CanvasText;
--separator-color: GrayText;
--doorhanger-separator-color: GrayText;
--toolbarSidebar-box-shadow: none;
--toolbarSidebar-border-bottom: 1px solid var(--toolbar-border-color);
} }
} }
@ -195,14 +211,6 @@ body {
body { body {
background-color: var(--body-bg-color); background-color: var(--body-bg-color);
}
body,
input,
button,
select {
font: message-box;
outline: none;
scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color); scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
} }
@ -248,6 +256,7 @@ select {
width: var(--sidebar-width); width: var(--sidebar-width);
visibility: hidden; visibility: hidden;
z-index: 100; z-index: 100;
font: message-box;
border-top: 1px solid rgba(51, 51, 51, 1); border-top: 1px solid rgba(51, 51, 51, 1);
border-inline-end: var(--doorhanger-border-color-whcm); border-inline-end: var(--doorhanger-border-color-whcm);
transition-property: inset-inline-start; transition-property: inset-inline-start;
@ -308,6 +317,26 @@ select {
right: 0; right: 0;
z-index: 9999; z-index: 9999;
cursor: default; cursor: default;
font: message-box;
}
.toolbar input,
.toolbar button,
.toolbar select,
.secondaryToolbar input,
.secondaryToolbar button,
.secondaryToolbar select,
.editorParamsToolbar input,
.editorParamsToolbar button,
.editorParamsToolbar select,
.findbar input,
.findbar button,
.findbar select,
#sidebarContainer input,
#sidebarContainer button,
#sidebarContainer select {
outline: none;
font: message-box;
} }
#toolbarContainer { #toolbarContainer {
@ -318,8 +347,8 @@ select {
width: 100%; width: 100%;
height: 32px; height: 32px;
background-color: var(--sidebar-toolbar-bg-color); background-color: var(--sidebar-toolbar-bg-color);
box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25), box-shadow: var(--toolbarSidebar-box-shadow);
0 1px 0 rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.1); border-bottom: var(--toolbarSidebar-border-bottom);
} }
#sidebarResizer { #sidebarResizer {
@ -339,7 +368,8 @@ select {
position: relative; position: relative;
height: 32px; height: 32px;
background-color: var(--toolbar-bg-color); background-color: var(--toolbar-bg-color);
box-shadow: 0 1px 0 var(--toolbar-border-color); box-shadow: var(--toolbar-box-shadow);
border-bottom: var(--toolbar-border-bottom);
} }
#toolbarViewer { #toolbarViewer {
@ -423,6 +453,7 @@ select {
height: auto; height: auto;
padding: 0 4px; padding: 0 4px;
margin: 4px 2px; margin: 4px 2px;
font: message-box;
font-size: 12px; font-size: 12px;
line-height: 14px; line-height: 14px;
text-align: left; text-align: left;
@ -770,6 +801,7 @@ select {
padding: 0; padding: 0;
overflow: hidden; overflow: hidden;
background-color: var(--dropdown-btn-bg-color); background-color: var(--dropdown-btn-bg-color);
border: var(--dropdown-btn-border);
} }
.dropdownToolbarButton::after { .dropdownToolbarButton::after {
top: 6px; top: 6px;
@ -1308,6 +1340,7 @@ dialog {
padding: 15px; padding: 15px;
border-spacing: 4px; border-spacing: 4px;
color: var(--main-color); color: var(--main-color);
font: message-box;
font-size: 12px; font-size: 12px;
line-height: 14px; line-height: 14px;
background-color: var(--doorhanger-bg-color); background-color: var(--doorhanger-bg-color);

View File

@ -15,14 +15,22 @@
:root { :root {
--xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>"); --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");
--xfa-focus-outline: auto;
} }
@media (forced-colors: active) { @media (forced-colors: active) {
:root {
--xfa-focus-outline: 2px solid CanvasText;
}
.xfaLayer *:required { .xfaLayer *:required {
outline: 1.5px solid selectedItem; outline: 1.5px solid selectedItem;
} }
} }
.xfaLayer {
background-color: transparent;
}
.xfaLayer .highlight { .xfaLayer .highlight {
margin: -1px; margin: -1px;
padding: 1px; padding: 1px;
@ -196,13 +204,13 @@
.xfaSelect:focus { .xfaSelect:focus {
background-image: none; background-image: none;
background-color: transparent; background-color: transparent;
outline: auto; outline: var(--xfa-focus-outline);
outline-offset: -1px; outline-offset: -1px;
} }
.xfaCheckbox:focus, .xfaCheckbox:focus,
.xfaRadio:focus { .xfaRadio:focus {
outline: auto; outline: var(--xfa-focus-outline);
} }
.xfaTextfield, .xfaTextfield,